Vercel部署失败,主页500错误
路由地址
NOROUTE
完整路由地址
NOROUTE
相关文档
https://docs.rsshub.app/install#deploy-to-vercel-zeit-now
预期是什么?
在Vercel 正常部署
实际发生了什么?
按照说明文档在Vercel部署RSSHub,不管是一键部署还是先fork后手动部署,均报500错误。
部署
RSSHub 演示 (https://rsshub.app)
部署相关信息
platform:Vercel,Node.js 18.x
额外信息
/var/task/lib/config.js:1
import 'dotenv/config';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at internalCompileFunction (node:internal/vm:73:18)
at wrapSafe (node:internal/modules/cjs/loader:1274:20)
at Module._compile (node:internal/modules/cjs/loader:1320:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1414:10)
at Module.load (node:internal/modules/cjs/loader:1197:32)
at Module._load (node:internal/modules/cjs/loader:1013:12)
at Function.exports.b (/opt/node-bridge/chunk-5UAC7W5H.js:1:1142)
at /opt/node-bridge/bridge-server-BGIDXK2J.js:1:1443
at Function.Re (/opt/node-bridge/bridge-server-BGIDXK2J.js:1:1809)
at Function.e.<computed>.L._load (/opt/node-bridge/bridge-server-BGIDXK2J.js:1:1413)
INIT_REPORT Init Duration: 342.28 ms Phase: invoke Status: error Error Type: Runtime.ExitError
Error: Runtime exited with error: exit status 1
Runtime.ExitError
这不是重复的 issue
- [X] 我已经搜索了 现有 issue,以确保该错误尚未被报告。
同样报错
然后问了一下chatgpt:
根据您提供的错误信息,看起来问题出现在您的代码中的 /var/task/lib/config.js 文件的第一行:
import 'dotenv/config';
这里使用了 ES6 的模块导入语法,但 Vercel 默认情况下可能不支持 ES6 模块的语法。这导致了 "SyntaxError: Cannot use import statement outside a module" 错误。
解决这个问题的方法之一是将该导入语句替换为 CommonJS 的 require 语法:
require('dotenv').config();
这样应该能够解决模块导入语法错误。确保您的函数代码和依赖项都遵循了 Vercel 的要求,并且能够在他们的环境中正确运行。
回退旧版本吧
似乎不是 import 'dotenv/config';的问题,git blame显示这个commit已经是一月份的事了 https://github.com/DIYgod/RSSHub/blame/master/lib/config.ts#L1 ,而 Vercel 部署失败应该就最近一星期。
测试下来 Vercel 上确定能正常使用的是 29276d8。
建议完整 fork 后部署 RSSHub/legacy 分支,或者参考 https://github.com/DIYgod/RSSHub/issues/14622#issuecomment-1983067252 在 Vercel 控制台新建 deployment,这样可以避免 force push。 ~~顺便一提如果和我一样用Instant rollback一直提示失败,可以这么解决~~:
- 先 fork 一份,假设在
https://github.com/aaa/RSSHub - 然后执行
git clone --depth=100 https://github.com/aaa/RSSHub && cd RSSHub
git checkout 29276d8
git branch -f master
git checkout master
git push -f
Vercel 应该就会部署上能正常工作的了,修复之后直接 sync fork就能回到最新的master分支。~~
更新到最新的commit,还是报 500: INTERNAL_SERVER_ERROR
除了回退旧版本,有没有其他什么方法?我已经重新部署了,回退不了了。
除了回退旧版本,有没有其他什么方法?我已经重新部署了,回退不了了。
可以回退。把你的 repo 重新 checkout 或者 reset
除了回退旧版本,有没有其他什么方法?我已经重新部署了,回退不了了。
可以回退。把你的 repo 重新 checkout 或者 reset
我是把vercel里的project删了,然后重新部署了一下,其他的信息都没了。
除了回退旧版本,有没有其他什么方法?我已经重新部署了,回退不了了。
可以回退。把你的 repo 重新 checkout 或者 reset
我是把vercel里的project删了,然后重新部署了一下,其他的信息都没了。
建议先学习下 git 使用,可以自定义部署。(作者搞更新也不新建个分支……)
在 Deployments 页面,展开右上角“…”菜单,点击“Create Deployment”,输入自己分叉中的commit链接,例如
https://github.com/DIYgod/RSSHub/commit/29276d8399ae626d4220e718b3ec7dbe9d22ef90(将DIYGod改为自己的用户名),可创建新的部署。
回滚成功了,不过一同步到最新的就又出错了,只能先用着,过段时间再同步试试。多谢。
遇到了一样的错误,会不会跟这次RSSHub的内核升级有关系?
根据DIYgod的文章《一个六岁开源项目的崩溃与新生》,本项目正在大刀阔斧地重构,期间保持Vercel支援不在最高优先级。 预计Vercel用户得在 29276d8399ae626d4220e718b3ec7dbe9d22ef90 版本停留一阵子(又不是不能用
Hono 框架支持的平台很多,等 Vercel 跑通了,将来 Cloudflare Workers / Deno Deploy 等平台上跑 RSSHub 也大有可能了。
预计Vercel用户得在 29276d8 版本停留一阵子(又不是不能用
推荐在 RSSHub/legacy 分支。。
当然更希望赶紧修了,让用户当小白测。
感谢各位的方法,整理了一下操作步骤。
具体操作步骤:
- 在自己的repo下,查看所有分支,并新建一个分支,如"legacy"(或其他你喜欢的名字),数据源选择RSSHub/legacy 分支。
- 在vercel中,新建一个"Deployment",新建方法见 @liyishuai 的回复。此时在新建页面上,就会出现你刚才建好的分支,并选择。
- 取消勾选"Use project's Ignore Build Step",否则本次部署会被跳过。
- 部署完成后,默认是preview环境,需要操作"Promote to Production",推到生产环境。
现在的最新commit……会自动重定向到官方文档站?
修复进度可以看关联 PR:https://github.com/DIYgod/RSSHub/pull/14918
或者 Cloudflare Workers 支持,都差不多:https://github.com/DIYgod/RSSHub/issues/14901 / https://github.com/DIYgod/RSSHub/pull/14917
现在就卡在 got 和 NextJS 不兼容这点,需要等待 got 依赖被移除。
修复进度可以看关联 PR:#14918 或者 Cloudflare Workers 支持,都差不多:#14901 / #14917 现在就卡在
got和 NextJS 不兼容这点,需要等待got依赖被移除。
看起来没什么有效进展,全在低优跟进。估计短期很难有变化。
其他人我不知道怎么弄的。但是各位大佬 半中半英 半缩写 半专业的名词。实在没看懂。希望我接下来的方法更适合小白。
【全部修改在github完成】不需要修改vercel!!
1、fork下rsshub。在fork界面中把【Copy the main branch only】这个勾勾取消掉
2、在自己fork后的rsshub中把默认的master修改为【legacy】
3、vercel中正常部署rsshub即可。
其他人我不知道怎么弄的。但是各位大佬 半中半英 半缩写 半专业的名词。实在没看懂。希望我接下来的方法更适合小白。 【全部修改在github完成】不需要修改vercel!! 1、fork下rsshub。在fork界面中把【Copy the main branch only】这个勾勾取消掉 2、在自己fork后的rsshub中把默认的master修改为【legacy】 3、vercel中正常部署rsshub即可。
不能部署指的是无法使用新版本部署,老版本一直都可以的。
亲测有用
目前解决了么 我看issue被关闭了,但是部署依旧有问题
可以,用楼上@cnkmmk的方法亲测可行
