永远与巴贝尔节点的错误

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

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

我也试过pm2和nodemon ,我也遇到同样的错误。 对于pm2,我跟着这个问题https://github.com/Unitech/PM2/issues/1167 ,但它也没有工作。 我在这里做错了什么?

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

另一个解决scheme是像这样使用Require Hook :

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

然后forever start server-wrapper.js运行forever start server-wrapper.js

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

也有效。

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

如果你正在使用react.js作为同构的应用程序,你还需要预编译浏览器的脚本(通过webpackwebpack等)。

所以我看不到利润通过按需编译es6脚本与预先编译的gulp或任何其他js构build系统。