在转发以下index.js
文件时,我收到此错误:
不变违规:标记无效:'使用严格';
我正在使用babel-core
,react
,react-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));
}
});
我该怎么办?
答案 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文件(没有导出任何内容)但做一个反应渲染之前,我还没有看过这种方法吗?