【发布时间】:2016-06-20 11:01:56
【问题描述】:
我上周刚开始使用 React,但在关注 a tutorial 以获取 static-render-webpack-plugin 时遇到了问题。
如果您想仔细查看,我已输入代码online at GitHub。
在按照教程进行一些更改后(我添加了 babel-core,我将 js 加载器更改为 babel-loader 并且入口点 url 需要进行小修正),当我尝试运行 webpack -p 生成静态文件我收到以下错误:
ERROR in ./src/entry.js
Module build failed: SyntaxError: .../src/entry.js: Unexpected token (10:2)
8 |
9 | const routes = (
> 10 | <Route path="/" handler={RootPage}>
| ^
我认为这可能与the changes made with the latest version of react-router 有关。我使用的是最新版本,但本教程的语法看起来可能是在 v.1.0 之前编写的。例如,我认为教程中提到将其添加到src/entry.js 文件的部分:
if (typeof document != 'undefined') {
Router.run(routes, path, (Root) => {
React.render(<Root/>, document);
});
}
可能需要重写成这样的东西(但我不确定这是否完全正确):
if (typeof document != 'undefined') {
ReactDOM.render(routes, document);
}
显然还有更多的事情发生,因为当我尝试重写 sn-p 然后运行 webpack-dev-server 时收到相同的错误消息 - 这是它应该命中该代码的唯一时间。 (是的,我在页面顶部添加了import ReactDOM from 'react-dom';,在package.json 中添加了"react-dom": "^0.14.7",。)
我确信这部分(也在 src/entry.js 上)也需要重写以匹配最新的 react-router,但我不确定如何:
export default function(path, props, callback) {
Router.run(routes, path, (Root) => {
const html = React.renderToString(<Root/>);
callback('<!doctype html>' + html);
});
}
提前感谢您提供的任何帮助或提示。
【问题讨论】:
-
我遇到了类似的问题。自从您发布此内容以来已经有几个星期了。运气好的话?! ??????
-
@Ivanoats 抱歉,我无法让它工作。我认为也许尝试使用 "react-router": "1.0.3" 而不是 2.0 版本的教程可能是一个起点,但是在不知道所有依赖项的版本的情况下,会涉及很多猜测。我真的希望插件链接到一个工作演示和回购。我一直在研究 metalsmith.io 作为替代方案。
-
谢谢 - 是的,在这两点上。存储库应该有一个超出测试的工作示例,而且 Metalsmith 也是我的备份。
-
@Ivanoats 如果您仍在寻找替代解决方案,这看起来像是赢家:github.com/gatsbyjs/gatsby
标签: reactjs webpack react-router