10

我正在使用webpack-dev-middleware以及在客户端上使用 react-router 的反应应用程序。

如果我在根目录下进入应用程序,一切都很好/,但webpack-dev-middleware不会提供任何带有路径的东西,比如“/my-route”

server.use(webpackDevMiddleware(compiler, {
    publicPath: '/'
}));

我尝试使用通配符,它​​允许所有路径通过并获取 html 页面,但似乎当页面请求时main.js,它现在也获取 html 页面,而不是打包的 javascript。

server.use('/*', webpackDevMiddleware(compiler, {
    publicPath: '/'
}));

目标是服务器不知道的任何路由,获得与根相同的内容,然后 react-router 将处理在客户端上显示正确的视图(或 404)。

任何帮助将非常感激。

4

2 回答 2

18

尝试connect-history-api-fallback npm 包,这是 webpack-dev-server 在后台使用的用于相同目的的包。

这对我有用:

var history = require('connect-history-api-fallback');
server.use(history());
server.use(webpackDevMiddleware(compiler, {
  publicPath: '/'
}));
于 2017-05-17T07:45:22.893 回答
0

我遇到了同样的问题,我的解决方案是更新 react-router-config 和 react-router-dom 包。无需进一步操作。

我从 4.x 升级到 5.0.1(在两个包中)。

于 2019-08-09T07:58:26.867 回答