在与 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 错误!在...启动脚

Git 在与 Heroku 交谈时使用了错误的电子邮件地址

未更改的文件正在触发 nodemon 重新启动

npm脚本中的nodemon多次触发

Node报错处理:[nodemon] app crashed - waiting for file changes before starting...