不变违规:标记无效:'使用严格&#39 ;;

时间:2016-06-11 10:43:23

标签: javascript reactjs react-router babeljs isomorphic-javascript

在转发以下index.js文件时,我收到此错误:

  

不变违规:标记无效:'使用严格';

我正在使用babel-corereactreact-dom

我的index.js文件:

import React from 'react'
import { render } from 'react-dom'
import { Router, Route, browserHistory, IndexRoute } from 'react-router'
import App from './components/App'
import Home from './components/Home'
import FundDetail from './components/FundDetail'

render((
  <Router history={browserHistory}>
    <Route path="/" component={App}>
      <IndexRoute component={Home}/>
      <Route path="/fund/:id" component={FundDetail}/>
    </Route>
  </Router>
), document.getElementById('content'))

我的.babaelrc文件:

{
  "presets": ["es2015"],
  "plugins": ["transform-strict-mode", "transform-react-jsx"]
}

服务器代码:

    var React = require("react");
    var ReactDom = require("react-dom/server");
    var babel = require('babel-core');
    var Component;
    babel.transformFile("./assets/js/index.js", {}, function (err, result) {
      if(err) {
        sails.log.error(err)
      } else {
        Component = React.createFactory(result.code);
        var comp = Component();
        res.send(ReactDom.renderToString(comp));
      }
    });

我该怎么办?

1 个答案:

答案 0 :(得分:1)

我猜你transform-react-jsx不是唯一需要的东西,为什么不使用预设呢?正如您所能see,不仅仅是变换:

npm i babel-preset-react --save

并将其添加到.babelrc:

"presets": ["es2015", "react"]

删除转换。

同时在服务器上尝试babel-core/register

我也不确定你在使用babel.transformFile做什么?通常你会做类似的事情:

server.get('*', require('./router'));

文件导出的function使用react-router的匹配。在要求index.js文件(没有导出任何内容)但做一个反应渲染之前,我还没有看过这种方法吗?