Node.js Mac 上的 Heroku 部署 - sh: 1: nodemon: 未找到/npm ERR! `nodemon fileName.js` / npm 错误!在...启动脚本时失败
Node.js Heroku Deployment on Mac - sh: 1: nodemon: not found / npm ERR! `nodemon fileName.js` / npm ERR! Failed at the...start script
在 Heroku
上部署 Node.js
使用 Mac
我的问题:
State changed from starting to crashed &&
sh: 1: nodemon: not found &&
Failed at...start script &&
status 1...code=H10
在创建前端 React
、后端服务器 node.js
/express.js
和数据库 PostgreSQL
之后,我尝试使用 Git
在 Heroku
上部署我的服务器。因为我已经有 Git
,所以我搬到了 Heroku CLI
首先,来自我服务器中的 terminal
...
brew install heroku/brew/heroku
heroku create
git remote -v
git push heroku master
如果这不是您第一次使用 Heroku
...
heroku git:remote -a theUrlYouWant
git push heroku master
...否则...Heroku
动态为您的应用分配一个端口,因此您不能将端口设置为固定数字。 Heroku 将端口添加到 env:
app.listen(process.env.PORT || 3000, () => {
console.log(`app is running on port ${process.env.PORT}`);
})
...如果您添加了端口:
git add .
git commit -m "adding port"
git push heroku master
...最后,从我在服务器中的终端:
➜ folderName git:(master) heroku open
➜ folderName git:(master) heroku logs --tail
2019-05-08T18:07:23.253827+00:00 heroku[web.1]: Starting process with command npm start
2019-05-08T18:07:25.323748+00:00 heroku[web.1]: State changed from starting to crashed
2019-05-08T18:05:17.074233+00:00 app[web.1]: > nodemon fileName.js
2019-05-08T18:05:17.074235+00:00 app[web.1]:
2019-05-08T18:05:17.098124+00:00 app[web.1]: sh: 1: nodemon: not found
2019-05-08T18:05:17.102512+00:00 app[web.1]: npm ERR! file sh
2019-05-08T18:05:17.102801+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2019-05-08T18:05:17.103068+00:00 app[web.1]: npm ERR! errno ENOENT
2019-05-08T18:05:17.103239+00:00 app[web.1]: npm ERR! syscall spawn
2019-05-08T18:05:17.104259+00:00 app[web.1]: npm ERR! app@1.0.0 start: nodemon fileName.js
2019-05-08T18:05:17.104361+00:00 app[web.1]: npm ERR! spawn ENOENT
2019-05-08T18:05:17.104553+00:00 app[web.1]: npm ERR!
2019-05-08T18:05:17.104692+00:00 app[web.1]: npm ERR! Failed at the app@1.0.0 start script.
2019-05-08T18:05:17.104841+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
[...]
2019-05-08T18:05:17.171915+00:00 heroku[web.1]: Process exited with status 1
2019-05-08T18:05:37.338695+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=yourURL.herokuapp.com request_id=hidden fwd="ip" dyno= connect= service= status=503 bytes= protocol=https
Heroku 运行默认在生产环境中,因此它不会安装开发依赖项。
如果您不想将 nodemon 作为依赖项重新安装,我认为您不应该这样做,因为正确的位置是在 devDependencies 中,而不是在依赖项中...
相反,您可以在 package.json
中创建第二个 npm 脚本,通过 运行ning nodemon
仅在您的本地主机中避免此错误:
"scripts": {
"start": "node fileName.js",
"start:dev": "nodemon fileName.js"
},
当您想在本地 运行 项目时,只需在您的终端 运行 npm start:dev
中,它将加载 fileName.js
和 nodemon
。
在 Heroku 中,默认情况下 npm start
运行s 并从普通节点命令加载 fileName.js 并且您可以摆脱该错误。
2019-05-08T18:13:40.319989+00:00 heroku[web.1]: State changed from crashed to starting
2019-05-08T18:13:41.000000+00:00 app[api]: Build succeeded
2019-05-08T18:13:42.658048+00:00 heroku[web.1]: Starting process with command npm start
2019-05-08T18:13:44.644005+00:00 app[web.1]:
2019-05-08T18:13:44.644025+00:00 app[web.1]: > app@1.0.0 start /app
2019-05-08T18:13:44.644027+00:00 app[web.1]: > node fileName.js
2019-05-08T18:13:44.644028+00:00 app[web.1]:
2019-05-08T18:13:45.158694+00:00 app[web.1]: app is running on port 33333
2019-05-08T18:13:46.293205+00:00 heroku[web.1]: State changed from starting to up
2019-05-08T18:13:47.788861+00:00 heroku[router]: at=info method=GET path="/" host=yourURL.herokuapp.com request_id=hidden fwd="ip" dyno=web.1 connect=0ms service=11ms status=200 bytes=245 protocol=https
I made this post in hopes to help you avoid the time it took me to debug this issue.
以下是对我有用的方法:
在您的 Heroku 应用程序中,转到 Settings
,然后单击 Reveal Config Vars
,然后使用 KEY
NPM_CONFIG_PRODUCTION
和 Value
添加一条新记录 false
.
我将 nodemon 添加到 package.json 中的依赖项中,它现在可以正常工作了。
"dependencies": {
"bcrypt-nodejs": "0.0.3",
"clarifai": "^2.9.1",
"cors": "^2.8.5",
"express": "^4.17.1",
"knex": "^0.95.4",
"pg": "^8.6.0",
"nodemon": "^2.0.7"
}
在 Heroku
上部署 Node.js
使用 Mac
我的问题:
State changed from starting to crashed &&
sh: 1: nodemon: not found &&
Failed at...start script &&
status 1...code=H10
在创建前端 React
、后端服务器 node.js
/express.js
和数据库 PostgreSQL
之后,我尝试使用 Git
在 Heroku
上部署我的服务器。因为我已经有 Git
,所以我搬到了 Heroku CLI
首先,来自我服务器中的 terminal
...
brew install heroku/brew/heroku
heroku create
git remote -v
git push heroku master
如果这不是您第一次使用 Heroku
...
heroku git:remote -a theUrlYouWant
git push heroku master
...否则...Heroku
动态为您的应用分配一个端口,因此您不能将端口设置为固定数字。 Heroku 将端口添加到 env:
app.listen(process.env.PORT || 3000, () => {
console.log(`app is running on port ${process.env.PORT}`);
})
...如果您添加了端口:
git add .
git commit -m "adding port"
git push heroku master
...最后,从我在服务器中的终端:
➜ folderName git:(master) heroku open
➜ folderName git:(master) heroku logs --tail
2019-05-08T18:07:23.253827+00:00 heroku[web.1]: Starting process with command npm start
2019-05-08T18:07:25.323748+00:00 heroku[web.1]: State changed from starting to crashed
2019-05-08T18:05:17.074233+00:00 app[web.1]: > nodemon fileName.js
2019-05-08T18:05:17.074235+00:00 app[web.1]:
2019-05-08T18:05:17.098124+00:00 app[web.1]: sh: 1: nodemon: not found
2019-05-08T18:05:17.102512+00:00 app[web.1]: npm ERR! file sh
2019-05-08T18:05:17.102801+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2019-05-08T18:05:17.103068+00:00 app[web.1]: npm ERR! errno ENOENT
2019-05-08T18:05:17.103239+00:00 app[web.1]: npm ERR! syscall spawn
2019-05-08T18:05:17.104259+00:00 app[web.1]: npm ERR! app@1.0.0 start: nodemon fileName.js
2019-05-08T18:05:17.104361+00:00 app[web.1]: npm ERR! spawn ENOENT
2019-05-08T18:05:17.104553+00:00 app[web.1]: npm ERR!
2019-05-08T18:05:17.104692+00:00 app[web.1]: npm ERR! Failed at the app@1.0.0 start script.
2019-05-08T18:05:17.104841+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
[...]
2019-05-08T18:05:17.171915+00:00 heroku[web.1]: Process exited with status 1
2019-05-08T18:05:37.338695+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=yourURL.herokuapp.com request_id=hidden fwd="ip" dyno= connect= service= status=503 bytes= protocol=https
Heroku 运行默认在生产环境中,因此它不会安装开发依赖项。
如果您不想将 nodemon 作为依赖项重新安装,我认为您不应该这样做,因为正确的位置是在 devDependencies 中,而不是在依赖项中...
相反,您可以在 package.json
中创建第二个 npm 脚本,通过 运行ning nodemon
仅在您的本地主机中避免此错误:
"scripts": {
"start": "node fileName.js",
"start:dev": "nodemon fileName.js"
},
当您想在本地 运行 项目时,只需在您的终端 运行 npm start:dev
中,它将加载 fileName.js
和 nodemon
。
在 Heroku 中,默认情况下 npm start
运行s 并从普通节点命令加载 fileName.js 并且您可以摆脱该错误。
2019-05-08T18:13:40.319989+00:00 heroku[web.1]: State changed from crashed to starting
2019-05-08T18:13:41.000000+00:00 app[api]: Build succeeded
2019-05-08T18:13:42.658048+00:00 heroku[web.1]: Starting process with command npm start
2019-05-08T18:13:44.644005+00:00 app[web.1]:
2019-05-08T18:13:44.644025+00:00 app[web.1]: > app@1.0.0 start /app
2019-05-08T18:13:44.644027+00:00 app[web.1]: > node fileName.js
2019-05-08T18:13:44.644028+00:00 app[web.1]:
2019-05-08T18:13:45.158694+00:00 app[web.1]: app is running on port 33333
2019-05-08T18:13:46.293205+00:00 heroku[web.1]: State changed from starting to up
2019-05-08T18:13:47.788861+00:00 heroku[router]: at=info method=GET path="/" host=yourURL.herokuapp.com request_id=hidden fwd="ip" dyno=web.1 connect=0ms service=11ms status=200 bytes=245 protocol=https
I made this post in hopes to help you avoid the time it took me to debug this issue.
以下是对我有用的方法:
在您的 Heroku 应用程序中,转到 Settings
,然后单击 Reveal Config Vars
,然后使用 KEY
NPM_CONFIG_PRODUCTION
和 Value
添加一条新记录 false
.
我将 nodemon 添加到 package.json 中的依赖项中,它现在可以正常工作了。
"dependencies": {
"bcrypt-nodejs": "0.0.3",
"clarifai": "^2.9.1",
"cors": "^2.8.5",
"express": "^4.17.1",
"knex": "^0.95.4",
"pg": "^8.6.0",
"nodemon": "^2.0.7"
}