You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 08:09:17