RSSHub icon indicating copy to clipboard operation
RSSHub copied to clipboard

Vercel部署失败,主页500错误

Open mapxn opened this issue 2 years ago • 25 comments

路由地址

NOROUTE

完整路由地址

NOROUTE

相关文档

https://docs.rsshub.app/install#deploy-to-vercel-zeit-now

预期是什么?

在Vercel 正常部署

实际发生了什么?

按照说明文档在Vercel部署RSSHub,不管是一键部署还是先fork后手动部署,均报500错误。

image

部署

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,以确保该错误尚未被报告。

mapxn avatar Mar 02 '24 02:03 mapxn

同样报错 然后问了一下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 的要求,并且能够在他们的环境中正确运行。

maxhuangping avatar Mar 02 '24 10:03 maxhuangping

回退旧版本吧

clacknya avatar Mar 02 '24 14:03 clacknya

似乎不是 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分支。~~

Vinfall avatar Mar 06 '24 01:03 Vinfall

更新到最新的commit,还是报 500: INTERNAL_SERVER_ERROR

cnkmmk avatar Mar 06 '24 18:03 cnkmmk

除了回退旧版本,有没有其他什么方法?我已经重新部署了,回退不了了。

chejg avatar Mar 07 '24 07:03 chejg

除了回退旧版本,有没有其他什么方法?我已经重新部署了,回退不了了。

可以回退。把你的 repo 重新 checkout 或者 reset

clacknya avatar Mar 07 '24 08:03 clacknya

除了回退旧版本,有没有其他什么方法?我已经重新部署了,回退不了了。

可以回退。把你的 repo 重新 checkout 或者 reset

我是把vercel里的project删了,然后重新部署了一下,其他的信息都没了。

chejg avatar Mar 07 '24 08:03 chejg

除了回退旧版本,有没有其他什么方法?我已经重新部署了,回退不了了。

可以回退。把你的 repo 重新 checkout 或者 reset

我是把vercel里的project删了,然后重新部署了一下,其他的信息都没了。

建议先学习下 git 使用,可以自定义部署。(作者搞更新也不新建个分支……)

clacknya avatar Mar 07 '24 08:03 clacknya

在 Deployments 页面,展开右上角“…”菜单,点击“Create Deployment”,输入自己分叉中的commit链接,例如 https://github.com/DIYgod/RSSHub/commit/29276d8399ae626d4220e718b3ec7dbe9d22ef90(将DIYGod改为自己的用户名),可创建新的部署。

liyishuai avatar Mar 07 '24 09:03 liyishuai

回滚成功了,不过一同步到最新的就又出错了,只能先用着,过段时间再同步试试。多谢。

chejg avatar Mar 07 '24 15:03 chejg

遇到了一样的错误,会不会跟这次RSSHub的内核升级有关系?

zhenlohuang avatar Mar 10 '24 03:03 zhenlohuang

根据DIYgod的文章《一个六岁开源项目的崩溃与新生》,本项目正在大刀阔斧地重构,期间保持Vercel支援不在最高优先级。 预计Vercel用户得在 29276d8399ae626d4220e718b3ec7dbe9d22ef90 版本停留一阵子(又不是不能用

liyishuai avatar Mar 12 '24 06:03 liyishuai

预计Vercel用户得在 29276d8 版本停留一阵子(又不是不能用

推荐在 RSSHub/legacy 分支。。

当然更希望赶紧修了,让用户当小白测。

runchard avatar Mar 13 '24 10:03 runchard

Hono 框架支持的平台很多,等 Vercel 跑通了,将来 Cloudflare Workers / Deno Deploy 等平台上跑 RSSHub 也大有可能了。

la3rence avatar Mar 14 '24 11:03 la3rence

image

maxhuangping avatar Mar 16 '24 11:03 maxhuangping

Snipaste_2024-03-17_23-32-23

People-11 avatar Mar 17 '24 12:03 People-11

预计Vercel用户得在 29276d8 版本停留一阵子(又不是不能用

推荐在 RSSHub/legacy 分支。。

当然更希望赶紧修了,让用户当小白测。

感谢各位的方法,整理了一下操作步骤。

具体操作步骤:

  1. 在自己的repo下,查看所有分支,并新建一个分支,如"legacy"(或其他你喜欢的名字),数据源选择RSSHub/legacy 分支。
  2. 在vercel中,新建一个"Deployment",新建方法见 @liyishuai 的回复。此时在新建页面上,就会出现你刚才建好的分支,并选择。
  3. 取消勾选"Use project's Ignore Build Step",否则本次部署会被跳过。
  4. 部署完成后,默认是preview环境,需要操作"Promote to Production",推到生产环境。

jacob2826 avatar Mar 18 '24 04:03 jacob2826

现在的最新commit……会自动重定向到官方文档站?

dzx-dzx avatar Mar 27 '24 09:03 dzx-dzx

修复进度可以看关联 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 依赖被移除。

Vinfall avatar Mar 31 '24 05:03 Vinfall

修复进度可以看关联 PR:#14918 或者 Cloudflare Workers 支持,都差不多:#14901 / #14917 现在就卡在 got 和 NextJS 不兼容这点,需要等待 got 依赖被移除。

看起来没什么有效进展,全在低优跟进。估计短期很难有变化。

jacob2826 avatar Apr 03 '24 03:04 jacob2826

其他人我不知道怎么弄的。但是各位大佬 半中半英 半缩写 半专业的名词。实在没看懂。希望我接下来的方法更适合小白。 【全部修改在github完成】不需要修改vercel!! 1、fork下rsshub。在fork界面中把【Copy the main branch only】这个勾勾取消掉 2、在自己fork后的rsshub中把默认的master修改为【legacy】 3、vercel中正常部署rsshub即可。 image

Whichbfj28 avatar Jul 12 '24 08:07 Whichbfj28

其他人我不知道怎么弄的。但是各位大佬 半中半英 半缩写 半专业的名词。实在没看懂。希望我接下来的方法更适合小白。 【全部修改在github完成】不需要修改vercel!! 1、fork下rsshub。在fork界面中把【Copy the main branch only】这个勾勾取消掉 2、在自己fork后的rsshub中把默认的master修改为【legacy】 3、vercel中正常部署rsshub即可。 image

不能部署指的是无法使用新版本部署,老版本一直都可以的。

cnkmmk avatar Jul 12 '24 09:07 cnkmmk

亲测有用

Shiguang-coding avatar Aug 31 '24 09:08 Shiguang-coding

目前解决了么 我看issue被关闭了,但是部署依旧有问题 image

Deja-vuuu avatar Sep 30 '24 05:09 Deja-vuuu

可以,用楼上@cnkmmk的方法亲测可行 image

morgancheung2024 avatar Sep 30 '24 09:09 morgancheung2024