【发布时间】:2017-02-18 01:09:20
【问题描述】:
我正在服务器上渲染我的 React 应用程序,但我收到此错误 TypeError: match is not a function。我不知道如何解决这个问题或这个错误意味着什么,因为 react-router 文档说其他方式。
var routes = require('./public/src/routes');
var React = require('react');
var renderToString = require('react-dom/server');
var match = require('react-router');
var RouterContext = require('react-router');
app.get('*', (req, res) => {
match(
{ routes, location: req.url },
(err, redirectLocation, renderProps) => {
if (err) {
return res.status(500).send(err.message);
}
let markup;
if(renderProps) {
markup = renderToString(React.createElement(RoutingContext, renderProps));
}
return res.render('index', { markup });
}
)
})
【问题讨论】:
-
您在哪里看到
match在这里导入? npmjs.com/package/react-router 在文档中很明显react-router没有导出函数。另请查看var match = require('react-router'); var RouterContext = require('react-router');。似乎您期望require('react-router')在每次调用它时返回不同的值。那没有意义。require('react-router')将始终返回相同的值。
标签: node.js reactjs react-router