Heroku部署Node.js服务报错:nodemon: not found问题求助
解决Heroku部署Node.js服务时nodemon未找到的问题
问题根源
Heroku默认仅安装package.json中dependencies字段的依赖,nodemon作为本地开发热重载工具,通常属于开发依赖范畴,不会在生产环境被安装;而你的start脚本指定用nodemon启动服务,导致Heroku运行时找不到该命令。
解决方案
修正启动脚本与依赖配置
生产环境无需使用nodemon,直接用node命令启动项目入口文件(你的项目入口是index.js),同时将nodemon添加到开发依赖中,修改后的package.json如下:{ "name": "backend", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "start": "node index.js", // 替换原nodemon启动命令 "dev": "nodemon index.js", // 新增本地开发专用脚本 "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "cors": "^2.8.5", "dotenv": "^16.0.1", "express": "^4.18.1", "mongodb": "^4.8.0" }, "devDependencies": { "nodemon": "^2.0.19" // 将nodemon标记为开发依赖 }, "engines":{ "node":"14.x" } }安装依赖并重新部署
本地执行命令安装开发依赖:npm install --save-dev nodemon提交修改到Git仓库后,重新部署到Heroku即可。
补充说明
- 本地开发时使用
npm run dev启动服务,可享受代码热重载;生产环境Heroku会自动执行npm start,用node直接启动服务,避免依赖缺失问题。 - 确认项目入口文件为
index.js(该文件负责MongoDB连接与服务启动),因此node index.js是正确的生产启动命令。
内容的提问来源于stack exchange,提问作者Aziz Rezgui
相关产品推荐
相关产品推荐

