永远与巴贝尔节点的错误
我有一个简单的节点服务器:
//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作为同构的应用程序,你还需要预编译浏览器的脚本(通过webpack
, webpack
等)。
所以我看不到利润通过按需编译es6
脚本与预先编译的gulp
或任何其他js构build系统。