Error while deploying NodeJs app on Heroku - node.js

I've tried to deploy my NodeJs app on Heroku, follows all steps on Heroku guide but I can't make it running. Here is the log:
2016-06-27T18:46:16.424477+00:00 heroku[web.1]: State changed from crashed to starting
2016-06-27T18:46:18.594534+00:00 heroku[web.1]: Starting process with command `npm start`
2016-06-27T18:46:21.204182+00:00 app[web.1]: npm ERR! Linux 3.13.0-85-generic
2016-06-27T18:46:21.205909+00:00 app[web.1]: npm ERR! npm v3.8.6
2016-06-27T18:46:21.204971+00:00 app[web.1]: npm ERR! argv "/app/.heroku/node/bin/node" "/app/.heroku/node/bin/npm" "start"
2016-06-27T18:46:21.209309+00:00 app[web.1]: npm ERR! missing script: start
2016-06-27T18:46:21.221679+00:00 app[web.1]: npm ERR! Please include the following file with any support request:
2016-06-27T18:46:21.209934+00:00 app[web.1]: npm ERR! <https://github.com/npm/npm/issues>
2016-06-27T18:46:21.207755+00:00 app[web.1]:
2016-06-27T18:46:21.221362+00:00 app[web.1]:
2016-06-27T18:46:21.209552+00:00 app[web.1]: npm ERR!
2016-06-27T18:46:21.209740+00:00 app[web.1]: npm ERR! If you need help, you may report this error at:
2016-06-27T18:46:21.221872+00:00 app[web.1]: npm ERR! /app/npm-debug.log
2016-06-27T18:46:21.205374+00:00 app[web.1]: npm ERR! node v5.11.1
2016-06-27T18:46:22.240678+00:00 heroku[web.1]: Process exited with status 1
2016-06-27T18:46:22.255389+00:00 heroku[web.1]: State changed from starting to crashed
Any thoughts?
[EDIT]
package.json:
"engines": {
"node": "5.11.1",
"npm": "3.8.6"
},
"scripts": {
"start": "node app.js"
},
Procfile:
web: npm start

package.json
{
"name": "your-project-name",
"version": "1.0.0",
"description": "desc",
"main": "app.js",
"scripts": {
"start": "node app.js",
...
}
...
}
Procfile
Above package.json is file good to go without a Procfile. Yet, if you want to have one, you can define it as follows:
web: node app.js

You need to tell Heroku how to start your app. Either do that by specifying a "start" script in package.json, or by providing a Procfile.

Related

How to solve the Error in deploying react app on Heroku

I run yarn install and yarn start locally for my project and it works fine. However, as soon as I push it to Heroku, I am unable to deploy it with the following error log:
2021-05-10T16:40:06.622555+00:00 app[web.1]: > react-scripts start
2021-05-10T16:40:06.622556+00:00 app[web.1]:
2021-05-10T16:40:06.627252+00:00 app[web.1]: sh: 1: react-scripts: not found
2021-05-10T16:40:06.636894+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2021-05-10T16:40:06.637303+00:00 app[web.1]: npm ERR! syscall spawn
2021-05-10T16:40:06.637496+00:00 app[web.1]: npm ERR! file sh
2021-05-10T16:40:06.637766+00:00 app[web.1]: npm ERR! errno ENOENT
2021-05-10T16:40:06.644457+00:00 app[web.1]: npm ERR! bleh#0.1.0 start: `react-scripts start`
2021-05-10T16:40:06.644627+00:00 app[web.1]: npm ERR! spawn ENOENT
2021-05-10T16:40:06.644771+00:00 app[web.1]: npm ERR!
2021-05-10T16:40:06.644922+00:00 app[web.1]: npm ERR! Failed at the bleh#0.1.0 start script.
2021-05-10T16:40:06.645043+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2021-05-10T16:40:06.654910+00:00 app[web.1]:
2021-05-10T16:40:06.655128+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2021-05-10T16:40:06.655306+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2021-05-10T16_40_06_646Z-debug.log
2021-05-10T16:40:06.706089+00:00 heroku[web.1]: Process exited with status 1
2021-05-10T16:40:06.778374+00:00 heroku[web.1]: State changed from starting to crashed
2021-05-10T16:41:26.103511+00:00 app[api]: Deploy 1f4ec645 by user holliu9999#gmail.com
2021-05-10T16:41:26.103511+00:00 app[api]: Release v7 created by user holliu9999#gmail.com
2021-05-10T16:41:26.390448+00:00 heroku[web.1]: State changed from crashed to starting
2021-05-10T16:41:30.000000+00:00 app[api]: Build succeeded
2021-05-10T16:41:32.398941+00:00 heroku[web.1]: Starting process with command `npm start`
In addition, I do only contain the yarn.lock in my directory so I am confused why it still runing npm. And here is my package.json file:
{
"name": "bleh",
"version": "0.1.0",
"private": true,
"devDependencies": {
"react-scripts": "0.9.0"
},
"dependencies": {
"react": "^15.4.2",
"react-dom": "^15.4.2",
"react-fontawesome": "^1.6.1",
"react-infinite": "^0.11.2",
"react-infinite-loader": "^1.0.2",
"react-router": "^3.0.2"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
}
}
You need to have a back-end server like node with express and config the script npm start. Go to Package.json --> scripts --> and add the script --> "start": "node app or index" depend of your root file. Btw you need to put the react application on the public folder of your backend.
Heroku needs a backend to start correctly.
You can see the express setup https://www.npmjs.com/package/express or http://expressjs.com/en/starter/hello-world.html

Heroku failing node app - try to run nodemon instead of node

I'm deploying my node app to Heroku and it's trying to invoke it with nodemon rather than the node app.js I have defined. my package.json(partial) looks like:
"scripts": {
"start": "node app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"engines": {
"node": "7.9.0"
},
when I run heroku logs I get
2018-02-22T22:41:44.798831+00:00 heroku[web.1]: Starting process with command `npm start`
2018-02-22T22:41:47.235623+00:00 app[web.1]:
2018-02-22T22:41:47.235654+00:00 app[web.1]: > api-barber-app#1.0.0 start /app
2018-02-22T22:41:47.235657+00:00 app[web.1]: > nodemon app.js
2018-02-22T22:41:47.235659+00:00 app[web.1]:
2018-02-22T22:41:47.247464+00:00 app[web.1]: sh: 1: nodemon: not found
2018-02-22T22:41:47.253052+00:00 app[web.1]: npm ERR! file sh
2018-02-22T22:41:47.253319+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2018-02-22T22:41:47.253543+00:00 app[web.1]: npm ERR! errno ENOENT
2018-02-22T22:41:47.253787+00:00 app[web.1]: npm ERR! syscall spawn
2018-02-22T22:41:47.254995+00:00 app[web.1]: npm ERR! api-barber-app#1.0.0 start: `nodemon app.js`
2018-02-22T22:41:47.255145+00:00 app[web.1]: npm ERR! spawn ENOENT
2018-02-22T22:41:47.255420+00:00 app[web.1]: npm ERR!
2018-02-22T22:41:47.255617+00:00 app[web.1]: npm ERR! Failed at the api-barber-app#1.0.0 start script.
2018-02-22T22:41:47.255793+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2018-02-22T22:41:47.269400+00:00 app[web.1]:
2018-02-22T22:41:47.269715+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2018-02-22T22:41:47.269916+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2018-02-22T22_41_47_261Z-debug.log
2018-02-22T22:41:47.348415+00:00 heroku[web.1]: Process exited with status 1
2018-02-22T22:41:47.467170+00:00 heroku[web.1]: State changed from starting to crashed
2018-02-22T22:41:47.475956+00:00 heroku[web.1]: State changed from crashed to starting
2018-02-22T22:41:51.465439+00:00 heroku[web.1]: Starting process with command `npm start`
2018-02-22T22:41:54.918389+00:00 heroku[web.1]: Process exited with status 1
2018-02-22T22:41:54.679566+00:00 app[web.1]:
2018-02-22T22:41:54.679592+00:00 app[web.1]: > api-barber-app#1.0.0 start /app
2018-02-22T22:41:54.679594+00:00 app[web.1]: > nodemon app.js
2018-02-22T22:41:54.679596+00:00 app[web.1]:
2018-02-22T22:41:54.711632+00:00 app[web.1]: sh: 1: nodemon: not found
2018-02-22T22:41:54.759423+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2018-02-22T22:41:54.757722+00:00 app[web.1]: npm ERR! file sh
2018-02-22T22:41:54.761226+00:00 app[web.1]: npm ERR! syscall spawn
2018-02-22T22:41:54.760427+00:00 app[web.1]: npm ERR! errno ENOENT
2018-02-22T22:41:54.768513+00:00 app[web.1]: npm ERR! api-barber-app#1.0.0 start: `nodemon app.js`
2018-02-22T22:41:54.768637+00:00 app[web.1]: npm ERR! spawn ENOENT
2018-02-22T22:41:54.768942+00:00 app[web.1]: npm ERR!
2018-02-22T22:41:54.769147+00:00 app[web.1]: npm ERR! Failed at the api-barber-app#1.0.0 start script.
2018-02-22T22:41:54.769369+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2018-02-22T22:41:54.825892+00:00 app[web.1]:
2018-02-22T22:41:54.826567+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2018-02-22T22:41:54.827196+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2018-02-22T22_41_54_816Z-debug.log
2018-02-22T22:41:54.934234+00:00 heroku[web.1]: State changed from starting to crashed
it try to run nodemon (what I had before) instead of node.js.
then when I push heroku it crash and not let me upload it right way.
heroku runs in a production environment by default so it does not install the dev dependencies, you can create a two npm script to avoid this error by running nodemon only in your localhost like that:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node app.js",
"start:dev": "nodemon --watch"
},
and when you want to run the project locally just run in your terminal npm run start:dev and it will load app.js by nodemon.
while in heroku npm start runs by default and load app.js from a normal node command and you get rid of that error.
I just had the same problem. After wasting a lot of time, I discovered that the whole time I was deploying the wrong branch. So if you are writing 'git push heroku master' for instance, 'master' is the branch you are pushing even if you are currently on a different branch.
Looks like nodemon is not in the dependencies, can you provide the package.json, make sure nodemon is in your dependencies

babel-node is not getting installed on Heroku

I'm using babel-node for ES6 syntax on Heroku, but I get a build error when I deploy. It says "babel-node: not found". I've tried a clean install on my local computer and it works perfectly. Package.json:
{
"name": "secret",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "./node_modules/.bin/babel-node ./bin/www"
},
"engines": {
"node": "7.5.0",
"npm": "5.0.3"
},
"dependencies": {
"babel-cli": "^6.24.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
...
}
}
I appreciate your help! :)
2017-07-17T11:02:26.997876+00:00 heroku[web.1]: State changed from crashed to starting
2017-07-17T11:02:31.839278+00:00 heroku[web.1]: Starting process with command `npm start`
2017-07-17T11:02:38.074157+00:00 heroku[web.1]: State changed from starting to crashed
2017-07-17T11:02:38.062607+00:00 heroku[web.1]: Process exited with status 1
2017-07-17T11:02:37.865774+00:00 app[web.1]:
2017-07-17T11:02:37.865786+00:00 app[web.1]: > secret#0.0.0 start /app
2017-07-17T11:02:37.865787+00:00 app[web.1]: > babel-node ./bin/www
2017-07-17T11:02:37.865787+00:00 app[web.1]:
2017-07-17T11:02:37.936361+00:00 app[web.1]: sh: 1: babel-node: not found
2017-07-17T11:02:37.966452+00:00 app[web.1]: npm ERR! file sh
2017-07-17T11:02:37.966683+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2017-07-17T11:02:37.966931+00:00 app[web.1]: npm ERR! errno ENOENT
2017-07-17T11:02:37.967106+00:00 app[web.1]: npm ERR! syscall spawn
2017-07-17T11:02:37.967287+00:00 app[web.1]: npm ERR! secret#0.0.0 start: `babel-node ./bin/www`
2017-07-17T11:02:37.967430+00:00 app[web.1]: npm ERR! spawn ENOENT
2017-07-17T11:02:37.967588+00:00 app[web.1]: npm ERR!
2017-07-17T11:02:37.967733+00:00 app[web.1]: npm ERR! Failed at the secret#0.0.0 start script.
2017-07-17T11:02:37.967873+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2017-07-17T11:02:37.969151+00:00 app[web.1]:
2017-07-17T11:02:37.969374+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2017-07-17T11:02:37.969484+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2017-07-17T11_02_37_957Z-debug.log
2017-07-17T11:25:52.044791+00:00 heroku[web.1]: State changed from crashed to starting
2017-07-17T11:25:54.841341+00:00 heroku[web.1]: Starting process with command `npm start`
2017-07-17T11:25:57.407691+00:00 heroku[web.1]: Process exited with status 1
2017-07-17T11:25:57.413873+00:00 heroku[web.1]: State changed from starting to crashed
2017-07-17T11:25:57.310176+00:00 app[web.1]:
2017-07-17T11:25:57.310190+00:00 app[web.1]: > secret#0.0.0 start /app
2017-07-17T11:25:57.310191+00:00 app[web.1]: > babel-node ./bin/www
2017-07-17T11:25:57.310192+00:00 app[web.1]:
2017-07-17T11:25:57.316940+00:00 app[web.1]: sh: 1: babel-node: not found
2017-07-17T11:25:57.335019+00:00 app[web.1]: npm ERR! file sh
2017-07-17T11:25:57.335287+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2017-07-17T11:25:57.335517+00:00 app[web.1]: npm ERR! errno ENOENT
2017-07-17T11:25:57.335735+00:00 app[web.1]: npm ERR! syscall spawn
2017-07-17T11:25:57.335933+00:00 app[web.1]: npm ERR! secret#0.0.0 start: `babel-node ./bin/www`
2017-07-17T11:25:57.336095+00:00 app[web.1]: npm ERR! spawn ENOENT
2017-07-17T11:25:57.336280+00:00 app[web.1]: npm ERR!
2017-07-17T11:25:57.336449+00:00 app[web.1]: npm ERR! Failed at the secret#0.0.0 start script.
2017-07-17T11:25:57.336614+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2017-07-17T11:25:57.337985+00:00 app[web.1]:
2017-07-17T11:25:57.338232+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2017-07-17T11:25:57.338379+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2017-07-17T11_25_57_323Z-debug.log
babel-node is "not meant for production use". There is a more relevant guide here for using #babel/cli, #babel/core and #babel/preset-env.
The babel dependencies should all be installed as devDependencies and you should transpile your code during in a build script run before Heroku prunes the devDependencies. See this guide
If you move all of your es6 code into a common directory like src at the top level of your app, you can create a build script to transpile everything in that directory to an output directory like build.
"build": "npm run clean && npm run build-babel",
"build-babel": "./node_modules/.bin/babel -d ./build ./src",
"clean": "rm -rf build && mkdir build",
In the example above, the build script will be run automatically by Heroku. clean will create a new build directory, and build-babel will transpile the code and place it in the build directory. After this is completed, Heroku will prune the devDependencies, but you will no longer need Babel.
When Heroku calls start below, it will be running your transpiled code. You should no longer see sh: 1: babel-node: not found.
"scripts": {
"build": "npm run clean && npm run build-babel",
"build-babel": "./node_modules/.bin/babel -d ./build ./src",
"clean": "rm -rf build && mkdir build",
"start": "node ./build/bin/www"
},
One potential gotcha, Do not call build from your start script. If you do, the devDependencies will have been pruned and you will get the following
sh: 1: babel: not found
A little bit late, but here is what I think you are missing:
Step (1): npm install --save babel-cli babel-preset-env in terminal
Note on step 1: Do not save to dev as that will require you to set NPM_CONFIG_PRODUCTION=false
Step (2): You are not compiling anything to babel without adding in the babel boilerplate and or using a babelrc file. Easiest method is to make a .babelrc file in your main app folder, ie. same one your package.json is in and input the following:
{
"presets": ["env"]
}
Note on step 2: With the usage of the env preset you do not need the babel-preset-es2015, etc
Step (3): You can now run your code using babel-node, so in your case execute your start script, ie. ./node_modules/.bin/babel-node ./bin/www
I suggest reading through the NPM module if you need further guidance understanding the preset logic: https://www.npmjs.com/package/babel-preset-env
Furthermore, I would suggest using a process manager like pm2. This allows your node instance to keep alive if it crashes. The forever module used to do this but pm2 is way better. Here is an example of a start script inside your package.json:
"scripts": {
"start": "node ./node_modules/.bin/pm2 start main.json --attach --env production"
}
Procfile (note, I am using nginx but just npm start would work fine):
web: bin/start-nginx npm start
worker: node ./node_modules/.bin/pm2 start worker.json --attach
And here would be your main.json with args to use babel-node (note, keep instance to 1 and do not fork on a web dyno in Heroku):
main.json:
{
"name": "the_awesome",
"script": "app.js",
"instances": 1,
"exec_mode": "cluster"
}
worker.json:
{
"name": "worker",
"script": "/app/lib/worker.js"
}
(4) Add a require('babel-register') hook to your app.js and worker.js if you are using pm2 in cluster mode. If you are using pm2 not in cluster mode, or just not using pm2 then you can use babel-node directly to run your .js or es6 files
Finally, to check if babel-node is really installed you can do the following:
heroku run bash -a {name of your app}
ls ./node_modules/.bin //babel-node should be present
Good luck!

Heroku node.js app runs locally but crashes remotely

I have a node.js application which is not a web application.
Here's my package.json:
{
"name": "myapp-backend",
"version": "1.0.0",
"description": "MyApp PubNub backend",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://git.heroku.com/myapp.git"
},
"keywords": [
"backend"
],
"author": "Pete Gu",
"license": "ISC",
"dependencies": {
"pubnub": "^4.3.3"
},
"engines": {
"node" : "6.9.2"
}
}
Contents of Procfile:
app: node app.js
It runs when I run heroku local. However, after pushing the code and checking logs with heroku logs I see this:
2016-12-22T06:07:01.276053+00:00 app[api]: Deploy fb193d3 by user xxxxx#xxxx.com
2016-12-22T06:07:01.477131+00:00 heroku[slug-compiler]: Slug compilation started
2016-12-22T06:07:01.477136+00:00 heroku[slug-compiler]: Slug compilation finished
2016-12-22T06:07:01.276053+00:00 app[api]: Release v13 created by user gpeetonn#gmail.com
2016-12-22T06:07:01.507095+00:00 heroku[web.1]: State changed from crashed to starting
2016-12-22T06:07:02.759643+00:00 heroku[web.1]: Starting process with command `npm start`
2016-12-22T06:07:06.003266+00:00 heroku[web.1]: Process exited with status 1
2016-12-22T06:07:06.016232+00:00 heroku[web.1]: State changed from starting to crashed
2016-12-22T06:07:06.017114+00:00 heroku[web.1]: State changed from crashed to starting
2016-12-22T06:07:05.872484+00:00 app[web.1]: npm ERR! Linux 3.13.0-105-generic
2016-12-22T06:07:05.872909+00:00 app[web.1]: npm ERR! argv "/app/.heroku/node/bin/node" "/app/.heroku/node/bin/npm" "start"
2016-12-22T06:07:05.873173+00:00 app[web.1]: npm ERR! node v6.9.2
2016-12-22T06:07:05.873421+00:00 app[web.1]: npm ERR! npm v3.10.9
2016-12-22T06:07:05.877486+00:00 app[web.1]: npm ERR! missing script: start
2016-12-22T06:07:05.875800+00:00 app[web.1]:
2016-12-22T06:07:05.877738+00:00 app[web.1]: npm ERR!
2016-12-22T06:07:05.877884+00:00 app[web.1]: npm ERR! If you need help, you may report this error at:
2016-12-22T06:07:05.878031+00:00 app[web.1]: npm ERR! <https://github.com/npm/npm/issues>
2016-12-22T06:07:05.892349+00:00 app[web.1]:
2016-12-22T06:07:05.892997+00:00 app[web.1]: npm ERR! /app/npm-debug.log
2016-12-22T06:07:05.892655+00:00 app[web.1]: npm ERR! Please include the following file with any support request:
2016-12-22T06:07:07.532860+00:00 heroku[web.1]: Starting process with command `npm start`
2016-12-22T06:07:10.603753+00:00 app[web.1]: npm ERR! Linux 3.13.0-105-generic
2016-12-22T06:07:10.604065+00:00 app[web.1]: npm ERR! argv "/app/.heroku/node/bin/node" "/app/.heroku/node/bin/npm" "start"
2016-12-22T06:07:10.604260+00:00 app[web.1]: npm ERR! node v6.9.2
2016-12-22T06:07:10.604476+00:00 app[web.1]: npm ERR! npm v3.10.9
2016-12-22T06:07:10.606525+00:00 app[web.1]:
2016-12-22T06:07:10.607621+00:00 app[web.1]: npm ERR! missing script: start
2016-12-22T06:07:10.607822+00:00 app[web.1]: npm ERR!
2016-12-22T06:07:10.607900+00:00 app[web.1]: npm ERR! If you need help, you may report this error at:
2016-12-22T06:07:10.607998+00:00 app[web.1]: npm ERR! <https://github.com/npm/npm/issues>
2016-12-22T06:07:10.618207+00:00 app[web.1]:
2016-12-22T06:07:10.618415+00:00 app[web.1]: npm ERR! Please include the following file with any support request:
2016-12-22T06:07:10.618645+00:00 app[web.1]: npm ERR! /app/npm-debug.log
2016-12-22T06:07:10.718608+00:00 heroku[web.1]: State changed from starting to crashed
2016-12-22T06:07:10.710362+00:00 heroku[web.1]: Process exited with status 1
...which completely doesn't make sense to me - why heroku tries to launch app using npm start instead of reading Procfile?
Heroku seems to be trying to start a web dyno, and doesn't seem to know about your Procfile.
Are you sure you added your Procfile to your git repo?
Anyway, try this:
heroku ps:scale web=0
heroku ps:scale app=1
You could also add "start": "node app.js" in the "scripts" section of your package.json.
I can see the error missing script: start So you need to add
"scripts": {
"start": "node bin/xxx" //your main file name
}
add this to your package.json.

package.json start script, babel-node: not found on heroku deploy

When I run heroku local or when I just do npm start locally, my app builds and runs fine. However when I deploy to heroku, the app crashes saying it cannot find babel-node.
Here is the log output:
2016-04-21T22:20:44.320025+00:00 heroku[api]: Deploy 5d9a9da by eagsalazar#gmail.com
2016-04-21T22:20:44.320084+00:00 heroku[api]: Release v9 created by eagsalazar#gmail.com
2016-04-21T22:20:44.542062+00:00 heroku[slug-compiler]: Slug compilation started
2016-04-21T22:20:44.542069+00:00 heroku[slug-compiler]: Slug compilation finished
2016-04-21T22:20:44.501025+00:00 heroku[web.1]: State changed from crashed to starting
2016-04-21T22:20:46.278065+00:00 heroku[web.1]: Starting process with command `npm start`
2016-04-21T22:20:50.467407+00:00 app[web.1]:
2016-04-21T22:20:50.467434+00:00 app[web.1]: > qc-server#1.0.0 start /app
2016-04-21T22:20:50.467435+00:00 app[web.1]: > babel-node index.js
2016-04-21T22:20:50.467436+00:00 app[web.1]:
2016-04-21T22:20:50.479490+00:00 app[web.1]: sh: 1: babel-node: not found
2016-04-21T22:20:50.521936+00:00 app[web.1]:
2016-04-21T22:20:50.538822+00:00 app[web.1]: npm ERR! Linux 3.13.0-79-generic
2016-04-21T22:20:50.539334+00:00 app[web.1]: npm ERR! argv "/app/.heroku/node/bin/node" "/app/.heroku/node/bin/npm" "start"
2016-04-21T22:20:50.539595+00:00 app[web.1]: npm ERR! node v5.10.1
2016-04-21T22:20:50.555119+00:00 app[web.1]: npm ERR! npm v3.8.3
2016-04-21T22:20:50.555339+00:00 app[web.1]: npm ERR! file sh
2016-04-21T22:20:50.555549+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2016-04-21T22:20:50.555769+00:00 app[web.1]: npm ERR! errno ENOENT
2016-04-21T22:20:50.555965+00:00 app[web.1]: npm ERR! syscall spawn
2016-04-21T22:20:50.556142+00:00 app[web.1]: npm ERR! qc-server#1.0.0 start: `babel-node index.js`
2016-04-21T22:20:50.556305+00:00 app[web.1]: npm ERR! spawn ENOENT
2016-04-21T22:20:50.556488+00:00 app[web.1]: npm ERR!
2016-04-21T22:20:50.556666+00:00 app[web.1]: npm ERR! Failed at the qc-server#1.0.0 start script 'babel-node index.js'.
2016-04-21T22:20:50.556854+00:00 app[web.1]: npm ERR! Make sure you have the latest version of node.js and npm installed.
2016-04-21T22:20:50.557017+00:00 app[web.1]: npm ERR! If you do, this is most likely a problem with the qc-server package,
2016-04-21T22:20:50.557175+00:00 app[web.1]: npm ERR! not with npm itself.
2016-04-21T22:20:50.557343+00:00 app[web.1]: npm ERR! Tell the author that this fails on your system:
2016-04-21T22:20:50.557564+00:00 app[web.1]: npm ERR! babel-node index.js
2016-04-21T22:20:50.557741+00:00 app[web.1]: npm ERR! You can get information on how to open an issue for this project with:
2016-04-21T22:20:50.557916+00:00 app[web.1]: npm ERR! npm bugs qc-server
2016-04-21T22:20:50.558110+00:00 app[web.1]: npm ERR! Or if that isn't available, you can get their info via:
2016-04-21T22:20:50.558306+00:00 app[web.1]: npm ERR! npm owner ls qc-server
2016-04-21T22:20:50.558492+00:00 app[web.1]: npm ERR! There is likely additional logging output above.
2016-04-21T22:20:50.563859+00:00 app[web.1]:
2016-04-21T22:20:50.567790+00:00 app[web.1]: npm ERR! Please include the following file with any support request:
2016-04-21T22:20:50.568004+00:00 app[web.1]: npm ERR! /app/npm-debug.log
2016-04-21T22:20:51.824822+00:00 heroku[web.1]: State changed from starting to crashed
2016-04-21T22:20:51.808246+00:00 heroku[web.1]: Process exited with status 1
My package.json:
{
"name": "qc-server",
"version": "1.0.0",
"description": "xxxx",
"main": "index.js",
"scripts": {
"test": "mocha --compilers js:babel-core/register --require ./test/test_helper.js 'test/**/*.js'",
"test:watch": "npm run test -- --watch -G",
"start": "babel-node index.js"
},
"babel": {
"presets": [
"es2015"
]
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"babel-cli": "^6.6.0",
"babel-core": "^6.6.0",
"babel-eslint": "^5.0.0",
"babel-preset-es2015": "^6.6.0",
"chai": "^3.5.0",
"chai-immutable": "^1.5.3",
"eslint": "^2.2.0",
"eslint-config-airbnb": "^6.0.2",
"eslint-plugin-react": "^4.1.0",
"mocha": "^2.4.5"
},
"dependencies": {
"express": "^4.13.4",
"immutable": "^3.7.6",
"node-uuid": "^1.4.7",
"redux": "^3.3.1",
"socket.io": "^1.4.5"
}
}
Anyone have suggestions?
You have to include the dependency in you package.json so it will install it when you deploy.
$ npm install babel-cli -S
Than you have to change you start command to be like:
"start": "babel-node index.js"
See here for more info on deploying babel on heroku.com.
Warning: using babel-node is not recommended in production
I got the same issue, but I think set NPM_CONFIG_PRODUCTION=false to install devDependencies will be better. I used below command:
heroku config:set NPM_CONFIG_PRODUCTION=false
Specifically, include the necessary dependency under 'dependencies' and not 'devDependencies' in your 'package.json file'. This is because Heroku prunes (removes) your 'devDependencies' once it completes its build process, leaving only the 'dependencies', to keep the app as lean as possible.
This causes errors if you've built your NodeJS app using ES6 modules and included the necessary dependencies under 'devDependencies' instead of 'dependencies', namely the '#babel/' family of dependencies.
Update
You should always build your NodeJS App before you deploy it so that you are always running the production build in the live environment which executes much faster with fewer resources.

Resources