【问题标题】:React Isomorphic setup and Node ES6 syntax issueReact Isomorphic 设置和 Node ES6 语法问题
【发布时间】: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 {

=================>>> 问题

  1. 看起来 Node 无法识别 ES6 语法,我尝试包含“babel”,我使用正确吗?或者如何让 Node 理解 ES6 语法??

  2. 以上是设置同构反应应用程序的正确方法吗?或者以同构方式设置反应应用程序的正确/推荐方法是什么??

感谢任何建议,谢谢。

【问题讨论】:

    标签: node.js reactjs


    【解决方案1】:

    Node.js 和 io.js 都不支持 ES6 解构赋值。

    【讨论】:

      【解决方案2】:

      您正在使用“node-jsx”“覆盖”babel 加载器。 Docs.

      //"there can be only one!" :)
      require("babel/register")({experimental: true});
      
      //to be removed
      //require('node-jsx').install({extension:'.jsx'});
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-16
        • 1970-01-01
        • 2017-02-04
        • 1970-01-01
        • 2021-04-29
        • 1970-01-01
        • 2016-08-14
        • 1970-01-01
        相关资源
        最近更新 更多