Heroku部署报错:nodemon: not found 技术求助
解决Heroku部署时
nodemon: not found及H10崩溃错误 问题情况
本地运行正常,但执行git push heroku部署到Heroku后应用崩溃,通过heroku logs --tail查看日志,提示nodemon: not found,进程退出状态码127,返回H10错误码。
错误日志
2022-07-27T15:44:24.983651+00:00 app[web.1]: > nodemon --watch backend --exec babel-node backend/server.js 2022-07-27T15:44:24.983654+00:00 app[web.1]: 2022-07-27T15:44:25.031291+00:00 app[web.1]: sh: 1: nodemon: not found 2022-07-27T15:44:25.310188+00:00 heroku[web.1]: Process exited with status 127 2022-07-27T15:44:25.401566+00:00 heroku[web.1]: State changed from starting to crashed 2022-07-27T15:44:47.638568+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=my-amason-app.herokuapp.com request_id=c61d813e-1467-4474-8b4d-ad2ecc4141ad fwd="162.212.108.4" dyno= connect= service= status=503 bytes= protocol=https 2022-07-27T15:44:47.962345+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=my-amason-app.herokuapp.com request_id=243e98ef-4b26-4a93-89f5-38515d30a4a4 fwd="162.212.108.4" dyno= connect= service= status=503 bytes= protocol=https 2022-07-27T16:09:50.250878+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=my-amason-app.herokuapp.com request_id=56e35e15-10e9-4609-8af0-9d42d97bdde7 fwd="162.212.108.4" dyno= connect= service= status=503 bytes= protocol=https 2022-07-27T16:09:50.746665+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=my-amason-app.herokuapp.com request_id=dfe6b501-c155-4e8a-8e8d-ad115771fd08 fwd="162.212.108.4" dyno= connect= service= status=503 bytes= protocol=https
相关配置文件
package.json
{ "dependencies": { "@babel/cli": "^7.18.6", "@babel/core": "^7.18.6", "@babel/node": "^7.18.6", "@babel/preset-env": "^7.18.6", "bcryptjs": "^2.4.3", "body-parser": "^1.19.0", "dotenv": "^16.0.1", "express": "^4.18.1", "express-async-handler": "^1.2.0", "jsonwebtoken": "^8.5.1", "mongoose": "^5.13.14", "multer": "^1.4.5-lts.1", "react-paypal-button-v2": "^2.6.3", "ts-node": "^10.9.1" }, "name": "amason", "version": "1.0.0", "type": "module", "main": "index.js", "devDependencies": { "nodemon": "^2.0.18" }, "engines": { "node": "16.13.2", "npm": "8.1.2" }, "scripts": { "build": "cd frontend && npm install && npm run build", "start": "nodemon --watch backend --exec babel-node backend/server.js" }, "author": "", "license": "ISC", "description": "" }
Procfile
web:node --experimental-modules backend/server.js
解决方案
核心原因
Heroku在生产环境默认仅安装package.json中dependencies内的包,devDependencies里的nodemon不会被安装,导致启动脚本执行时找不到该命令,进程直接退出,触发H10崩溃错误。
具体修复步骤
方案一:生产环境移除nodemon(推荐)
nodemon是开发时用于热重载的工具,生产环境不需要。修改package.json中的start脚本,直接用babel-node启动服务:
"scripts": { "build": "cd frontend && npm install && npm run build", "start": "babel-node backend/server.js", "dev": "nodemon --watch backend --exec babel-node backend/server.js" // 保留开发环境的nodemon命令 }
方案二:将nodemon移至dependencies(不推荐生产环境)
如果一定要在生产环境使用nodemon,把它从devDependencies移到dependencies中:
"dependencies": { // ... 其他依赖 "nodemon": "^2.0.18" }, "devDependencies": { // 移除nodemon }
同步Procfile配置
确保Procfile的启动命令和start脚本一致,比如改为:
web:npm start
完成修改后,重新提交代码并部署:
git add . git commit -m "fix: resolve nodemon not found error on Heroku" git push heroku
内容的提问来源于stack exchange,提问作者Susan
相关产品推荐
相关产品推荐

