我有一个简单的节点服务器:
//server.就是
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 -r babel-register" ./src/index.js
也有效。
这适用于我的即时翻译: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
。
我建议将es6
脚本预编译到es5
脚本中,并使用forever start server.js
命令运行应用程序,其中server.js
是预编译的结果。
如果您将react.js用于同构应用程序,则还需要为浏览器预编译脚本(通过browserify
,webpack
等)。
因此,通过按需编译与使用es6
或任何其他js构建系统进行预编译,我认为使用gulp
脚本无益。
在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
文件中的dependencies标记中
然后做一个npm install
然后通过执行npm start
运行服务器