部署在 Heroku 上的 Node 应用程序立即崩溃

时间:2021-05-16 21:12:50

标签: javascript node.js heroku

***已修复,感谢所有帮助过的人。

您好,感谢您尝试帮助我。我已经通过谷歌和这里查看了修复,但无济于事。这是我问的第一个问题,所以如果我说的不够清楚或不够具体,我深表歉意,并会尽力解决。

我最近使用免费的 dyno(他们的 node.js buildpack)在 heroku 上部署了一个应用程序。

这个应用程序在我的本地主机上运行得非常好。当我开始部署过程并检查日志时,我遇到了这个错误:

    2021-05-16T21:03:07.870774+00:00 heroku[web.1]: State changed from crashed to starting
2021-05-16T21:03:14.868295+00:00 heroku[web.1]: Starting process with command `npm start`
2021-05-16T21:03:18.871696+00:00 app[web.1]: 
2021-05-16T21:03:18.871706+00:00 app[web.1]: > server@1.0.0 start /app
2021-05-16T21:03:18.871707+00:00 app[web.1]: > nodemon index.js
2021-05-16T21:03:18.871707+00:00 app[web.1]: 
2021-05-16T21:03:19.162417+00:00 app[web.1]: [33m[nodemon] 2.0.7[39m
2021-05-16T21:03:19.167339+00:00 app[web.1]: [33m[nodemon] to restart at any time, enter `rs`[39m
2021-05-16T21:03:19.167341+00:00 app[web.1]: [33m[nodemon] watching path(s): *.*[39m
2021-05-16T21:03:19.167341+00:00 app[web.1]: [33m[nodemon] watching extensions: js,mjs,json[39m
2021-05-16T21:03:19.167342+00:00 app[web.1]: [32m[nodemon] starting `node index.js index.js`[39m
2021-05-16T21:03:19.271336+00:00 app[web.1]: internal/modules/cjs/loader.js:888
2021-05-16T21:03:19.271342+00:00 app[web.1]:   throw err;
2021-05-16T21:03:19.271342+00:00 app[web.1]:   ^
2021-05-16T21:03:19.271343+00:00 app[web.1]: 
2021-05-16T21:03:19.271343+00:00 app[web.1]: Error: Cannot find module '/app/index.js'
2021-05-16T21:03:19.271379+00:00 app[web.1]:     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:885:15)
2021-05-16T21:03:19.271580+00:00 app[web.1]:     at Function.Module._load (internal/modules/cjs/loader.js:730:27)
2021-05-16T21:03:19.271582+00:00 app[web.1]:     at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
2021-05-16T21:03:19.271583+00:00 app[web.1]:     at internal/main/run_main_module.js:17:47 {
2021-05-16T21:03:19.271587+00:00 app[web.1]:   code: 'MODULE_NOT_FOUND',
2021-05-16T21:03:19.271587+00:00 app[web.1]:   requireStack: []
2021-05-16T21:03:19.271588+00:00 app[web.1]: }
2021-05-16T21:03:19.279342+00:00 app[web.1]: [31m[nodemon] app crashed - waiting for file changes before starting...[39m
2021-05-16T21:04:15.043653+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2021-05-16T21:04:15.098622+00:00 heroku[web.1]: Stopping process with SIGKILL
2021-05-16T21:04:15.255205+00:00 heroku[web.1]: Process exited with status 137
2021-05-16T21:04:15.331085+00:00 heroku[web.1]: State changed from starting to crashed

我尝试将我的启动脚本更改为不包含 nodemon,我尝试将我的 index.js 移动到 app/index.js,因为它在该日志中说,我尝试使用“node”的任意组合更改启动脚本index.js" "nodemon index.js"

我不知道为什么它不能正常工作。在该日志的末尾,即使我将其设置为 process.env.PORT,由于未与 $PORT 绑定,它也会超时。

欢迎提出任何建议,如果我需要提供更多代码,请告诉我。

这是应用程序的文件结构: File structure

这是我的 index.js 的结构: index.js

2 个答案:

答案 0 :(得分:0)

这可能不是您的主要错误,但需要为 heroku 单独设置环境变量,heroku 不会从您的本地 .env 文件中读取。

您可以通过转到您的应用程序,然后在 settings->config vars 下进行设置,在这里您只需从 .env 文件中一一复制和粘贴键/值即可。

答案 1 :(得分:0)

我认为这就是它失败的原因

[32m[nodemon] starting `node index.js index.js`[39m
2021-05-16T21:03:19.271336+00:00 app[web.1]: internal/modules/cjs/loader.js:888
2021-05-16T21:03:19.271342+00:00 app[web.1]:   throw err;

我认为你的节点运行脚本是错误的,它试图运行 node index.js index.js

检查您的 Package.json 文件

潜在问题 2

如果不是上面那么第二个问题我看到的是 index.js 的路径

2021-05-16T21:03:19.271343+00:00 app[web.1]: Error: Cannot find module '/app/index.js'
2021-05-16T21:03:19.271379+00:00 app[web.1]:     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:885:15)
2021-05-16T21:03:19.271580+00:00 app[web.1]:     at Function.Module._load (internal/modules/cjs/loader.js:730:27)

您的 index.js 是否与 package.json 处于同一级别,还是位于文件夹内? 因为当您看到错误日志时,它说无法加载模块 /app/index.js [假设 /app/ 是您的根文件夹]

如果文件以大写 I 开头并且在节点脚本中您有小 i 或反之亦然,也会发生这种情况