我在这里提到了两个问题,这两个问题将在本文末尾。
=================>>> 背景<<< =================
我试图测试反应同构的方式,我设置了server.js并安装了以下节点模块
我的节点版本节点:' 0.12.0'
"babel": "^4.7.16",
"babel-core": "^4.7.16",
"babel-loader": "^4.2.0",
"babel-runtime": "^4.7.16",
"node-jsx": "^0.12.4",
以下是我的server.js(部分)
require("babel/register")({experimental: true});
require('node-jsx').install({extension:'.jsx'});
var express = require('express');
var server = express();
var port = process.env.PORT || 3000;
var React = require('react');
var EntryPointComponent = React.createFactory(require('./router.jsx'));
server.use(function(req, res, next) {
var component = EntryPointComponent();
var html = React.renderToString(component);
res.send(html);
});
server.listen(port);
以下是示例routes.jsx(部分,它将包含在router.jsx中)
var React = require('react'),
Router = require('react-router'),
{Route, NotFoundRoute} = Router,
App = require('./app'),
DefaultHandler = require('./pages/test');
module.exports = (
<Route handler={App}>
<Route name="test" handler={DefaultHandler} path="/test" addHandlerKey={true} />
<NotFoundRoute handler={DefaultHandler} />
</Route>
)
以下是router.jsx
var React = require('react'),
Router = require('react-router'),
routes = require('./routes');
Router.run(routes, function(Handler) {
React.render(<Handler/>, document.getElementById("content"));
});
=================&GT;&GT;&GT; 问题&lt;&lt;&lt; =================
当我尝试运行以下命令时
node server.js --harmony
它会引发我意想不到的令牌问题
/blah/blah/blah/routes.jsx:3
{Route, NotFoundRoute} = Router,
^
SyntaxError: Unexpected token {
=================&GT;&GT;&GT; 问题&lt;&lt;&lt; =================
看起来Node没有识别出ES6语法,我尝试包含&#34; babel&#34;,我是否正确使用它?或者如何让Node了解ES6语法?
以上是设置同构反应应用程序的正确方法吗?或者以同构方式设置反应应用程序的正确/推荐方法是什么?
感谢任何建议。
答案 0 :(得分:3)
你是否已超越&#39;使用&#39; node-jsx&#39;进行babel加载程序。 Docs
//"there can be only one!" :)
require("babel/register")({experimental: true});
//to be removed
//require('node-jsx').install({extension:'.jsx'});
答案 1 :(得分:-3)
Node.js和io.js都不支持ES6解构分配。