Node.js Heroku Deployment on Mac - sh: 1: nodemon: not found / npm ERR! `nodemon fileName.js` / npm ERR! Failed at the...start script
Solution 1
Heroku runs in a production environment by default so it does not install the dev dependencies.
If you don't want to reinstall nodemon as a dependency, which I think you shouldn't, because it's right place is in devDependencies, not in dependencies...
Instead, you can create a second npm script, in your package.json
, to avoid this error by running nodemon
only in your localhost:
"scripts": {
"start": "node fileName.js",
"start:dev": "nodemon fileName.js"
},
And when you want to run the project locally, just run in your terminal npm start:dev
and it will load fileName.js
with nodemon
.
While in Heroku, npm start
runs by default and loads fileName.js from a normal node command and you get rid of that error.
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]: > [email protected] 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.
Solution 2
Here`s what worked for me:
In your Heroku app, go to Settings
, then click Reveal Config Vars
and then add a new record with KEY
NPM_CONFIG_PRODUCTION
and Value
false
.
Solution 3
I added nodemon to the dependencies in package.json and it is working now.
"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"
}
Q.McKinley
Updated on June 05, 2022Comments
-
Q.McKinley almost 2 years
Deploying on
Heroku
withNode.js
usingMac
My issue:
State changed from starting to crashed && sh: 1: nodemon: not found && Failed at...start script && status 1...code=H10
After creating my front-end, with
React
, back-end server, withnode.js
/express.js
, and database, withPostgreSQL
, I attempted to deploy my server onHeroku
withGit
. Since I already hadGit
, I moved ontoHeroku CLI
First, from the
terminal
in my server...brew install heroku/brew/heroku heroku create git remote -v git push heroku master
If this is not your first time using
Heroku
...heroku git:remote -a theUrlYouWant git push heroku master
...otherwise...
Heroku
dynamically assigns your app a port, so you can't set the port to a fixed number. Heroku adds the port to the env:app.listen(process.env.PORT || 3000, () => { console.log(`app is running on port ${process.env.PORT}`); })
...if you added port:
git add . git commit -m "adding port" git push heroku master
...finally, from my terminal in server:
➜ 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! [email protected] 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 [email protected] 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
-
Max von Hippel almost 5 yearsPerfect! Now once the (I think 10 hour?) time period passes after which you are allowed to accept your answer, remember to do so.
-
2oppin over 2 yearsa little update, Heroku does install dev dependencies, but pruning it after the build; so you can use your dev dependencies to build your app; i.e: "scripts":{"install": "babel src/app.js --out-file build/app.js"}