使用Mac
在Heroku
上部署Node.js
我的问题:
State changed from starting to crashed &&
sh: 1: nodemon: not found &&
Failed at...start script &&
status 1...code=H10
在使用React
创建前端、使用node.js
/express.js
创建后端服务器以及使用PostgreSQL
创建数据库之后,我尝试使用Git
在Heroku
上部署服务器。因为我已经有了Git
,所以我移到了Heroku CLI
- 首先,从我的服务器中的
terminal
…*
brew install heroku/brew/heroku
heroku create
git remote -v
git push heroku master
- 如果您不是第一次使用
Heroku
... *
heroku git:remote -a theUrlYouWant
git push heroku master
- ...否则...
Heroku
会动态地为应用分配一个端口,因此您无法将端口设置为固定数目。Heroku将端口添加到env:*
app.listen(process.env.PORT || 3000, () => {
console.log(`app is running on port ${process.env.PORT}`);
})
- ...如果您添加了端口:*
git add .
git commit -m "adding port"
git push heroku master
- ...最后,从我的终端在服务器:*
➜ folderName git:(master) heroku open
➜ folderName git:(master) heroku logs --tail
2019-05-08T18:07:23.253827+00:00 heroku[web.1]: Starting process with command npm start
2019-05-08T18:07:25.323748+00:00 heroku[web.1]: State changed from starting to crashed
2019-05-08T18:05:17.074233+00:00 app[web.1]: > nodemon fileName.js
2019-05-08T18:05:17.074235+00:00 app[web.1]:
2019-05-08T18:05:17.098124+00:00 app[web.1]: sh: 1: nodemon: not found
2019-05-08T18:05:17.102512+00:00 app[web.1]: npm ERR! file sh
2019-05-08T18:05:17.102801+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2019-05-08T18:05:17.103068+00:00 app[web.1]: npm ERR! errno ENOENT
2019-05-08T18:05:17.103239+00:00 app[web.1]: npm ERR! syscall spawn
2019-05-08T18:05:17.104259+00:00 app[web.1]: npm ERR! app@1.0.0 start: nodemon fileName.js
2019-05-08T18:05:17.104361+00:00 app[web.1]: npm ERR! spawn ENOENT
2019-05-08T18:05:17.104553+00:00 app[web.1]: npm ERR!
2019-05-08T18:05:17.104692+00:00 app[web.1]: npm ERR! Failed at the app@1.0.0 start script.
2019-05-08T18:05:17.104841+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
[...]
2019-05-08T18:05:17.171915+00:00 heroku[web.1]: Process exited with status 1
2019-05-08T18:05:37.338695+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=yourURL.herokuapp.com request_id=hidden fwd="ip" dyno= connect= service= status=503 bytes= protocol=https
4条答案
按热度按时间lhcgjxsq1#
Heroku默认运行在生产环境中,因此它不安装开发依赖项。
如果你不想重新安装nodemon作为一个依赖,我认为你不应该,因为它的正确位置是在devDependencies,而不是在依赖...
相反,您可以在
package.json
中创建第二个npm脚本,通过仅在本地主机中运行nodemon
来避免此错误:当你想在本地运行这个项目时,只要在你的终端
npm start:dev
中运行,它就会用nodemon
加载fileName.js
。在Heroku中,
npm start
默认运行,并从普通节点命令加载fileName.js,您可以消除该错误。我写这篇文章是希望能帮助你避免我花在调试这个问题上的时间。
lnlaulya2#
以下是对我有效的方法:
在Heroku应用程序中,转到
Settings
,然后单击Reveal Config Vars
,然后添加新记录KEY
NPM_CONFIG_PRODUCTION
和Value
false
。8oomwypt3#
我在package.json中添加了nodemon的依赖项,它现在可以工作了。
xzv2uavs4#
TL;DR
之前
“start”:
nodemon fileName.js
之后
“start”:
node fileName.js
,“dev”:
nodemon fileName.js
,要在本地运行,请运行
npm run dev
以启动应用程序,而不是npm run start
说明
**“dependencies”:**已安装在生产环境中,这意味着它们将在您的生产环境中
“devDependencies”: