10

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

//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

4 回答 4

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

也有效。

于 2016-10-18T01:55:41.290 回答
8

这对我来说适用于即时翻译:forever start -c node_modules/.bin/babel-node server.js

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

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

require('./server.js');

然后运行forever start server-wrapper.js

于 2015-07-13T15:04:18.063 回答
1

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

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

因此,我认为es6通过按需编译与使用gulp任何其他 js 构建系统进行预编译相比,使用脚本没有任何好处。

于 2015-06-19T09:42:14.537 回答
0

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

在标签package.jsonscripts

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

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

然后做一个npm install然后通过执行运行服务器npm start

于 2019-03-08T06:35:05.137 回答