我正在尝试在heroku中运行我的节点应用程序,但是出现了与nodemon依赖相关的错误。
2018-12-16T21:32:51.891208+00:00 app[web.1]: sh: 1: nodemon: not found
2018-12-16T21:32:51.895084+00:00 app[web.1]: npm ERR! file sh
2018-12-16T21:32:51.895380+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2018-12-16T21:32:51.895627+00:00 app[web.1]: npm ERR! errno ENOENT
2018-12-16T21:32:51.895865+00:00 app[web.1]: npm ERR! syscall spawn
2018-12-16T21:32:51.896987+00:00 app[web.1]: npm ERR! turktutor_backend@1.0.0 start: `nodemon --watch`
2018-12-16T21:32:51.897151+00:00 app[web.1]: npm ERR! spawn ENOENT
我有这样的package.json:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon --watch"
},
"dependencies": {
"bcrypt": "^3.0.2",
"body-parser": "^1.18.3",
"express": "^4.16.4",
"express-validator": "^5.3.0",
"googleapis": "^27.0.0",
"jsonwebtoken": "^8.4.0",
"mongoose": "^5.3.14",
"mongoose-unique-validator": "^2.0.2",
"nodemailer": "^4.7.0"
},
"devDependencies": {
"morgan": "^1.9.1",
"nodemon": "^1.18.7"
}
我尝试遵循此link中需要更改“ Procfile”文件的解决方案,但是heroku说Node.js应用程序source
不再需要Procfile我想知道是否需要通过一些命令将devDependencies安装在heroku服务器中!
所以请帮忙解决这个问题?
答案 0 :(得分:2)
我认为默认情况下,heroku仅安装非开发依赖项,因此未找到nodemon。您可以在heroku仪表板上定义环境变量,但是我认为它不会安装dev依赖项。在生产中,您不需要nodemon,您的想法是什么?
答案 1 :(得分:0)
我发现heroku默认在生产环境中运行,因此它不会安装dev依赖项,因此我在package.json中创建了两个不同的npm脚本脚本,如下所示:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node index.js",
"start:dev": "nodemon --watch"
},
,当我想在本地运行项目时,我运行npm run start:dev
以便它通过nodemon加载index.js,而在heroku npm start
中则默认运行并从普通的node命令加载index.js。