【发布时间】:2018-02-21 05:29:28
【问题描述】:
我有一个 node.js 应用程序,一个 API,可与 heroku local 一起使用,但不能在远程测功机上运行。具体来说,它在构建后失败并显示以下消息:
2018-02-19T21:19:38.000000+00:00 app[api]: Build started by user ---
2018-02-19T21:20:01.874321+00:00 heroku[web.1]: State changed from crashed to starting
2018-02-19T21:20:01.588534+00:00 app[api]: Release v16 created by user ---
2018-02-19T21:20:01.588534+00:00 app[api]: Deploy c3f854a0 by user ---
2018-02-19T21:19:38.000000+00:00 app[api]: Build succeeded
2018-02-19T21:20:03.954335+00:00 heroku[web.1]: Starting process with command `npm start`
2018-02-19T21:20:05.841898+00:00 app[web.1]: [heroku-exec] Starting
2018-02-19T21:20:06.353423+00:00 app[web.1]:
2018-02-19T21:20:06.353446+00:00 app[web.1]: > saasaato-backend@1.0.5 start /app
2018-02-19T21:20:06.353449+00:00 app[web.1]: > node dist/server.js
2018-02-19T21:20:06.353451+00:00 app[web.1]:
2018-02-19T21:20:06.443156+00:00 app[web.1]: module.js:544
2018-02-19T21:20:06.443160+00:00 app[web.1]: throw err;
2018-02-19T21:20:06.443161+00:00 app[web.1]: ^
2018-02-19T21:20:06.443163+00:00 app[web.1]:
2018-02-19T21:20:06.443165+00:00 app[web.1]: Error: Cannot find module '/app/dist/server.js'
2018-02-19T21:20:06.443169+00:00 app[web.1]: at Function.Module._resolveFilename (module.js:542:15)
2018-02-19T21:20:06.443171+00:00 app[web.1]: at Function.Module._load (module.js:472:25)
2018-02-19T21:20:06.443173+00:00 app[web.1]: at Function.Module.runMain (module.js:682:10)
2018-02-19T21:20:06.443175+00:00 app[web.1]: at startup (bootstrap_node.js:191:16)
2018-02-19T21:20:06.443177+00:00 app[web.1]: at bootstrap_node.js:613:3
2018-02-19T21:20:06.448738+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2018-02-19T21:20:06.449100+00:00 app[web.1]: npm ERR! errno 1
2018-02-19T21:20:06.450147+00:00 app[web.1]: npm ERR! saasaato-backend@1.0.5 start: `node dist/server.js`
2018-02-19T21:20:06.450299+00:00 app[web.1]: npm ERR! Exit status 1
2018-02-19T21:20:06.450518+00:00 app[web.1]: npm ERR!
2018-02-19T21:20:06.450686+00:00 app[web.1]: npm ERR! Failed at the saasaato-backend@1.0.5 start script.
2018-02-19T21:20:06.450842+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2018-02-19T21:20:06.458437+00:00 app[web.1]:
2018-02-19T21:20:06.458601+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2018-02-19T21:20:06.458706+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2018-02-19T21_20_06_451Z-debug.log
2018-02-19T21:20:06.518039+00:00 heroku[web.1]: Process exited with status 1
2018-02-19T21:20:06.535280+00:00 heroku[web.1]: State changed from starting to crashed
此应用程序之前的 heroku 版本可以运行,但我无法弄清楚出了什么问题。我尝试将 heroku 设置为不缓存任何文件、仔细检查节点和 npm 版本等。任何帮助将不胜感激!
【问题讨论】:
-
我从 package.json 中的
{ ..., "scripts": { "start": "node dist/server.js" }, ... }和 Procfile 中的web: npm start开始。值得注意的是,在 package.json、Procfile、server.js 或 app.js 崩溃之前,我没有任何机会...... -
我觉得是相对路径的问题,试试改脚本如下:
{ ..., "scripts": { "start": "node ./dist/server.js" }, ... } -
谢谢,但它仍然以同样的方式失败......
-
@kgangadhar 我刚刚记得我已将
/dist添加到我的.gitignore 中。该应用程序现在可以在没有该行的情况下运行,即在我git push heroku master源代码以及在我的本地计算机上生成的 dist 文件夹之后。 Heroku 日志显示“构建成功”并且没有错误。你怎么看这个? -
根据您的启动命令,我可以说您的主文件
server.js存在于dist文件夹中,并且启动您的应用程序是必须且应该的。由于您将其添加到.gitignore中,因此该文件夹和服务器文件未推送到 heroku,因此您收到此错误。这是主要原因。