【发布时间】:2015-05-25 00:22:24
【问题描述】:
我在这里包括了两个问题,这两个问题将在这篇文章的末尾。
=================>>> 背景
我正在尝试测试反应同构方式,我设置了一个 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"));
});
=================>>> 问题
当我尝试运行以下命令时
node server.js --harmony
它会给我带来意想不到的令牌问题
/blah/blah/blah/routes.jsx:3
{Route, NotFoundRoute} = Router,
^
SyntaxError: Unexpected token {
=================>>> 问题
看起来 Node 无法识别 ES6 语法,我尝试包含“babel”,我使用正确吗?或者如何让 Node 理解 ES6 语法??
以上是设置同构反应应用程序的正确方法吗?或者以同构方式设置反应应用程序的正确/推荐方法是什么??
感谢任何建议,谢谢。
【问题讨论】: