babel-node的永远错误

时间:2015-06-16 08:35:00

标签: node.js forever babeljs pm2

我有一个简单的节点服务器:

// server.js

import express  from 'express';
import React    from 'react';
...

当我尝试使用Forever

运行此操作时

forever start -c "babel-node --experimental" server.js ,由于使用import

而导致错误
/Applications/MAMP/htdocs/React/ReactBoilerplates/koba04/app/server.js:1
(function (exports, require, module, __filename, __dirname) { import express  
                                                              ^^^^^^
SyntaxError: Unexpected reserved word
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3
error: Forever detected script exited with code: 8

我还尝试了pm2nodemon,我也遇到了同样的错误。 对于pm2,我遵循了这个问题https://github.com/Unitech/PM2/issues/1167,但它也没有用。我在这里做错了什么?

4 个答案:

答案 0 :(得分:9)

forever start -c "node -r babel-register" ./src/index.js

也有效。

答案 1 :(得分:8)

这适用于我的即时翻译:{{1​​}}

另一种解决方案是使用Require Hook,如下所示:

forever start -c node_modules/.bin/babel-node server.js

然后运行// server-wrapper.js require('babel/register'); require('./server.js');

答案 2 :(得分:1)

我建议您将es6脚本预编译为es5脚本,并使用forever start server.js命令运行应用程序,其中server.js是预编译的结果。

如果您将react.js用于同构应用,则还需要为浏览器预编译脚本(通过browserifywebpack等)。

因此,通过按需编译与使用es6或任何其他js构建系统进行预编译,我认为使用gulp脚本无益。

答案 3 :(得分:0)

package.json标签下的scripts文件中,添加如下所示的条目

package.json标签下的scripts

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "forever start -c babel-node src/index.js",
},

所有依赖项都必须包含在package.json文件的依赖项标记中

然后执行npm install然后 通过执行npm start

运行服务器