在与 nodemon 相关的 heroku 触发错误上部署节点应用程序
Posted
技术标签:
【中文标题】在与 nodemon 相关的 heroku 触发错误上部署节点应用程序【英文标题】:Deploying node app on heroku firing errors related to nodemon 【发布时间】:2019-05-17 07:42:05 【问题描述】:我正在尝试在 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 应用程序不再需要 Procfile source
我想知道是否需要通过某些命令在 heroku 服务器中安装我的 devDependencies!
所以请帮忙解决这个问题?
【问题讨论】:
据我所知,您不需要 nodemon 进行生产。最好写start
脚本如:node app.js
有道理,但我想一定有一种方法可以让 nodemon 作为开发环境在 heroku 应用程序上运行!
【参考方案1】:
默认情况下,heroku 只安装非开发依赖项,这就是找不到 nodemon 的原因。您可以在 heroku 仪表板上定义环境变量,但我认为它不会安装开发依赖项。在生产中你不需要 nodemon,你的想法是什么?
【讨论】:
【参考方案2】:我发现 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
中默认运行并从普通节点命令加载 index.js。
【讨论】:
以上是关于在与 nodemon 相关的 heroku 触发错误上部署节点应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Heroku 无法启动我的节点应用程序,因为它试图用 nodemon 来做
Mac 上的 Node.js Heroku 部署 - sh: 1: nodemon: not found / npm ERR! `nodemon fileName.js`/npm 错误!在...启动脚
Node报错处理:[nodemon] app crashed - waiting for file changes before starting...