[英]React-router causes Cannot read property 'listen' of undefined
I faced strange js exception when rendered webpack build with react-router
on the server side: 当在服务器端使用
react-router
渲染webpack时,我遇到了奇怪的js异常:
Cannot read property 'listen' of undefined
How can I solve it? 我该如何解决?
browserHistory
is the code resulted by createRouterHistory , which returns undefined
if DOM is not defined. browserHistory
是createRouterHistory生成的代码,如果undefined
DOM,则返回undefined
。 That's why you are having this error. 这就是你遇到这个错误的原因。
Solution is to import useRouterHistory
and replace it somehow with createMemoryHistory
, which intention is to be used for server side rendering. 解决方法是导入
useRouterHistory
并以某种方式将其替换为createMemoryHistory
,其意图用于服务器端呈现。 Implementation for webpack: webpack的实现:
# application.js
import { Router, useRouterHistory } from "react-router"
import { createHistory } from "history"
const browserHistory = useRouterHistory(createHistory)({ queryKey: false })
<Router history={history}>
...bla-bla
</Router>
# webpack.config.server.js - sends this code to react server
new webpack.NormalModuleReplacementPlugin(
/createBrowserHistory/,
require.resolve("./node_modules/react-router/lib/createMemoryHistory.js")
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.