Heroku找不到`babel-core / register`

我正在使用NodeJS构build一个小型的url-shortener应用程序。 我在ES6中编写代码,使用导入Babel的索引文件,然后是我的服务器:

require('babel-core/register'); require('./server.js'); 

这在localhost上运行绝对正常,所有的ES6代码都能正常工作。

但是,当我成功地部署到Heroku,我收到一个应用程序错误,以下显示在heroku日志 – tail -a shortenthisurl:

 2016-02-06T12:31:14.074071+00:00 heroku[slug-compiler]: Slug compilation started 2016-02-06T12:31:14.074080+00:00 heroku[slug-compiler]: Slug compilation finished 2016-02-06T12:31:13.936954+00:00 heroku[api]: Deploy f576f69 by rory88@gmail.com 2016-02-06T12:31:13.936991+00:00 heroku[api]: Release v17 created by rory88@gmail.com 2016-02-06T12:31:14.230327+00:00 heroku[web.1]: State changed from crashed to starting 2016-02-06T12:31:15.215417+00:00 heroku[web.1]: Starting process with command `node index.js` 2016-02-06T12:31:16.816525+00:00 app[web.1]: module.js:341 2016-02-06T12:31:16.816534+00:00 app[web.1]: throw err; 2016-02-06T12:31:16.816535+00:00 app[web.1]: ^ 2016-02-06T12:31:16.816536+00:00 app[web.1]: 2016-02-06T12:31:16.816541+00:00 app[web.1]: Error: Cannot find module 'babel-core/register' 2016-02-06T12:31:16.816541+00:00 app[web.1]: at Function.Module._resolveFilename (module.js:339:15) 2016-02-06T12:31:16.816542+00:00 app[web.1]: at Function.Module._load (module.js:290:25) 2016-02-06T12:31:16.816543+00:00 app[web.1]: at Module.require (module.js:367:17) 2016-02-06T12:31:16.816544+00:00 app[web.1]: at require (internal/module.js:16:19) 2016-02-06T12:31:16.816544+00:00 app[web.1]: at Object.<anonymous> (/app/index.js:1:63) 2016-02-06T12:31:16.816545+00:00 app[web.1]: at Module._compile (module.js:413:34) 2016-02-06T12:31:16.816546+00:00 app[web.1]: at Object.Module._extensions..js (module.js:422:10) 2016-02-06T12:31:16.816546+00:00 app[web.1]: at Module.load (module.js:357:32) 2016-02-06T12:31:16.816547+00:00 app[web.1]: at Function.Module._load (module.js:314:12) 2016-02-06T12:31:16.816547+00:00 app[web.1]: at Function.Module.runMain (module.js:447:10) 2016-02-06T12:31:17.669897+00:00 heroku[web.1]: State changed from starting to crashed 2016-02-06T12:31:17.655186+00:00 heroku[web.1]: Process exited with status 1 2016-02-06T12:31:40.693975+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=shortenthisurl.herokuapp.com request_id=c2bffaba-4de6-4310-b535-4ff37ec637ad fwd="86.1.35.144" dyno= connect= service= status=503 bytes= 

这是我的package.json

 { "name": "shortenthisurl", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "test": "mocha --compilers js:babel-register -w", "start": "node server.js", "babel-node": "babel-node --stage 0 --ignore='foo|bar|baz'", "build": "babel -d lib" }, "author": "", "license": "ISC", "dependencies": { "babel": "^6.3.26", "chai": "^3.5.0", "express": "^4.13.4", "lodash": "^4.2.1", "mocha": "^2.4.5", "mongoose": "^4.4.1", "request": "^2.69.0" }, "devDependencies": { "babel-core": "^6.4.5", "babel-preset-es2015": "^6.3.13", "babel-register": "^6.4.3" } } 

也许我没有正确的导入Babel。 你有什么build议,我可能会怎么做这个工作?

这里是链接到Github的完整回购: https : //github.com/alanbuchanan/shortenthisurl

该模块不可用,因为它没有安装。 Heroku只安装dependencies包,因为这些是应用程序工作所必需的。

从Heroku文档 :

Npm从任何以NPM_CONFIG开始的环境variables中读取configuration。 默认情况下,我们将production = true设置为仅安装依赖项。

您可以通过将babel-core模块从devDependenciesdependencies列表来解决此问题,因为您需要该模块将ES6脚本编译为ES5。