I worked on a simple application and I served it on heroku . I added neutrino to this project. locally with yarn it's working but now I have problem on serving it on heroku. the question is how can i install neutrino on heroku?
here is my package.json
{
"name": "portfolio",
"version": "0.1.0",
"private": true,
"scripts": {
"start": "neutrino start",
"build": "neutrino build"
},
"devDependencies": {
},
"dependencies": {
"neutrino-middleware-sass": "^0.0.1",
"react": "^16.0.0",
"react-burger-menu": "^2.1.10",
"react-dom": "^16.0.0",
"react-hot-loader": "3.0.0-beta.6",
"react-router-dom": "^4.2.2",
"react-typist": "^2.0.4",
"neutrino": "^7.3.1",
"neutrino-preset-react": "^7.3.1"
}
}
and here is the logs on heroku
2017-11-07T20:24:27.718248+00:00 app[web.1]: npm ERR! spawn ENOENT
2017-11-07T20:24:27.718349+00:00 app[web.1]: npm ERR!
2017-11-07T20:24:27.718449+00:00 app[web.1]: npm ERR! Failed at the portfolio#0.1.0 start script 'neutrino start'.
2017-11-07T20:24:27.718537+00:00 app[web.1]: npm ERR! Make sure you have the latest version of node.js and npm installed.
2017-11-07T20:24:27.718625+00:00 app[web.1]: npm ERR! If you do, this is most likely a problem with the portfolio package,
2017-11-07T20:24:27.718869+00:00 app[web.1]: npm ERR! not with npm itself.
2017-11-07T20:24:27.718943+00:00 app[web.1]: npm ERR! Tell the author that this fails on your system:
2017-11-07T20:24:27.719014+00:00 app[web.1]: npm ERR! neutrino start
2017-11-07T20:24:27.719102+00:00 app[web.1]: npm ERR! You can get information on how to open an issue for this project with:
2017-11-07T20:24:27.719214+00:00 app[web.1]: npm ERR! npm bugs portfolio
2017-11-07T20:24:27.719288+00:00 app[web.1]: npm ERR! Or if that isn't available, you can get their info via:
2017-11-07T20:24:27.719372+00:00 app[web.1]: npm ERR! npm owner ls portfolio
2017-11-07T20:24:27.719460+00:00 app[web.1]: npm ERR! There is likely additional logging output above.
2017-11-07T20:24:27.722711+00:00 app[web.1]:
2017-11-07T20:24:27.722863+00:00 app[web.1]: npm ERR! Please include the following file with any support request:
2017-11-07T20:24:27.722931+00:00 app[web.1]: npm ERR! /app/npm-debug.log
2017-11-07T20:24:27.785333+00:00 heroku[web.1]: Process exited with status 1
2017-11-07T20:24:27.797858+00:00 heroku[web.1]: State changed from starting to crashed
2017-11-07T20:24:27.800281+00:00 heroku[web.1]: State changed from crashed to starting
2017-11-07T20:24:36.861424+00:00 heroku[web.1]: Starting process with command `npm start`
2017-11-07T20:24:39.981092+00:00 app[web.1]:
2017-11-07T20:24:39.981104+00:00 app[web.1]: > portfolio#0.1.0 start /app
2017-11-07T20:24:39.981106+00:00 app[web.1]:
2017-11-07T20:24:39.981105+00:00 app[web.1]: > neutrino start
2017-11-07T20:24:39.994350+00:00 app[web.1]:
2017-11-07T20:24:39.987770+00:00 app[web.1]: sh: 1: neutrino: not found
2017-11-07T20:24:40.005120+00:00 app[web.1]: npm ERR! Linux 3.13.0-133-generic
2017-11-07T20:24:40.005428+00:00 app[web.1]: npm ERR! argv "/app/.heroku/node/bin/node" "/app/.heroku/node/bin/npm" "start"
2017-11-07T20:24:40.005665+00:00 app[web.1]: npm ERR! node v6.12.0
First up, if you are deploying a static web app or single page app to Heroku, you'll want to make sure your Heroku application is using the nodejs and static buildpacks. You can check which buildpacks you are using with:
heroku buildpacks
Which outputs something like:
❯ heroku buildpacks
=== your-app Buildpack URLs
1. heroku/nodejs
2. https://github.com/hone/heroku-buildpack-static
If you don't have these buildpacks set, you can do it with:
heroku buildpacks:add heroku/nodejs
heroku buildpacks:add https://github.com/hone/heroku-buildpack-static
To configure the static site, drop a static.json file in the root of your project according to the documentation at https://github.com/heroku/heroku-buildpack-static. For starters, if you are building a single page app with HTML5 routing (e.g., react-router), you could start with:
{
"root": "build",
"clean_urls": true,
"routes": {
"/**": "index.html"
}
}
Next up, you can store your development/build dependencies in devDependencies, and set the Heroku config to install them when it is building:
heroku config:set NPM_CONFIG_PRODUCTION=false
When Heroku deploys a Node.js application (which Neutrino is), it tries to use the "start" script defined in package.json to start your app. This won't work for a statically built web app, since we actually want to just build the files and let the static buildpack serve it. To override what Heroku does, you can add a heroku-postbuild script to your package.json:
"scripts": {
"heroku-postbuild": "neutrino build"
}
That should get you going! Lastly, if you are injecting environment variables into your Neutrino app from Heroku, you'll want to make sure you re-build the app, as Heroku doesn't do this by default. This probably entails pushing an empty commit to your repo, or some other re-building mechanism.
Related
I'm having trouble viewing my Node/Express + React project in Heroku. After successfully pushing my project to Heroku, I get a 404 error page when I try to view my app in heroku.
Heroku Logs shows that the concurrently package was not found
I was wondering if anyone can help me figure out why?
Everything works locally. No issues.
I haven't been able to find any solutions. I've tried this:
https://github.com/RickWong/react-isomorphic-starterkit/issues/12
I tried setting an environment variable in heroku with the following suggestion:
heroku config:set NPM_CONFIG_PRODUCTION=false
However, it did not work.
I also found this:
https://github.com/rickbergfalk/sqlpad/issues/359
I've attempted re-installing concurrently twice, in the server folder, as well as in root. But with each instance, I got the same error telling me that concurrently was not found.
Here is the Heroku log:
2019-01-05T04:44:42.843348+00:00 heroku[web.1]: Starting process with command `npm start`
2019-01-05T04:44:45.795355+00:00 heroku[web.1]: Process exited with status 1
2019-01-05T04:44:45.817371+00:00 heroku[web.1]: State changed from starting to crashed
2019-01-05T04:44:45.825275+00:00 heroku[web.1]: State changed from crashed to starting
2019-01-05T04:44:45.691080+00:00 app[web.1]:
2019-01-05T04:44:45.691107+00:00 app[web.1]: > hello_fullstack#1.0.0 start /app
2019-01-05T04:44:45.691110+00:00 app[web.1]: > concurrently -- kill-others "npm run server" "npm run client"
2019-01-05T04:44:45.691112+00:00 app[web.1]:
2019-01-05T04:44:45.699841+00:00 app[web.1]: sh: 1: concurrently: not found
2019-01-05T04:44:45.704281+00:00 app[web.1]: npm ERR! file sh
2019-01-05T04:44:45.704664+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2019-01-05T04:44:45.704985+00:00 app[web.1]: npm ERR! errno ENOENT
2019-01-05T04:44:45.705300+00:00 app[web.1]: npm ERR! syscall spawn
2019-01-05T04:44:45.706913+00:00 app[web.1]: npm ERR! hello_fullstack#1.0.0 start: `concurrently -- kill-others "npm run server" "npm run client"`
2019-01-05T04:44:45.707140+00:00 app[web.1]: npm ERR! spawn ENOENT
2019-01-05T04:44:45.707475+00:00 app[web.1]: npm ERR!
2019-01-05T04:44:45.707708+00:00 app[web.1]: npm ERR! Failed at the hello_fullstack#1.0.0 start script.
2019-01-05T04:44:45.708000+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2019-01-05T04:44:45.718125+00:00 app[web.1]:
2019-01-05T04:44:45.718481+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2019-01-05T04:44:45.718674+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2019-01-05T04_44_45_709Z-debug.log
Any suggestions?
(Not sure this matters, but my dev environment is in ubuntu, which I'm running inside virtualbox; host os is Windows 8)
I found a solution to my problem.
After struggling with it, I decided to just start over and build a sample react/express app, and see if I could deploy it to heroku. Upon successfully deploying, I compared the code from my sample app and my broken app. It then occurred to me that perhaps the issue was with the commands that I assigned to the heroku-postbuild script in the package.json file of my root folder.
Previously, I had this junk:
"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"
I changed that to this:
"heroku-postbuild": "cd client && npm install && npm run build"
And, like magic, it worked! I guess I wasn't "building" what I was supposed to build on the heroku side.
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!
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.
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.
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.