web-dev-qa-db-fra.com

script de démarrage package.json, babel-node: introuvable sur heroku deploy

Quand je lance heroku local ou quand je fais juste npm start localement, mon application se construit et fonctionne correctement. Cependant, lorsque je déploie sur Heroku, l'application se bloque en disant qu'elle ne trouve pas babel-node.

Voici la sortie du journal:

2016-04-21T22:20:44.320025+00:00 heroku[api]: Deploy 5d9a9da by [email protected]
2016-04-21T22:20:44.320084+00:00 heroku[api]: Release v9 created by [email protected]
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]: > [email protected] 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! [email protected] 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 [email protected] 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

Mon 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"
  }
}

Quelqu'un a des suggestions?

13
eagspoo

Vous devez inclure la dépendance dans votre package.json afin qu'il l'installe lors de votre déploiement.

$ npm install babel-cli -S

Ensuite, vous devez changer votre commande start pour ressembler à:

"start": "babel-node index.js"

Voir ici pour plus d'informations sur le déploiement de babel sur heroku.com.

Attention: l'utilisation de babel-node n'est pas recommandée en production

18
Ricardo Souza

J'ai le même problème, mais je pense que définir NPM_CONFIG_PRODUCTION=false pour installer devDependencies sera mieux. J'ai utilisé la commande ci-dessous:

heroku config:set NPM_CONFIG_PRODUCTION=false
15
Toan Tran

Spécifiquement, incluez la dépendance nécessaire sous "dépendances" et non "devDependencies" dans votre "fichier package.json". En effet, Heroku taille (supprime) vos "devDependencies" une fois qu'il a terminé son processus de construction, ne laissant que les "dépendances", pour garder l'application aussi légère que possible.

Cela provoque des erreurs si vous avez construit votre application NodeJS à l'aide des modules ES6 et inclus les dépendances nécessaires sous 'devDependencies' au lieu de 'dependencies', à savoir la famille de dépendances '@ babel /'.

0
Raymond Wachaga