如何允许webpack-dev-server允许来自react-router的入口点

我正在创建一个使用webpack-dev-server和react-router进行开发的应用程序。

似乎webpack-dev-server是建立在一个位置上有一个公共入口点(即“ /”)的假设之上的,而react-router允许无限数量的入口点。

我想要webpack-dev-server的好处,特别是对生产力非常有用的热重载功能,但是我仍然希望能够加载react-router中设置的路由。

一个人如何实现它以使其协同工作?您能以这种方式在webpack-dev-server前面运行一个Express服务器吗?

村村小小十三2020/03/12 12:39:56

可能并非在所有情况下都如此,但是publicPath: '/'devServer中选项似乎是解决深层路由问题的最简单解决方案,请参阅:https : //github.com/ReactTraining/react-router/issues/676

泡芙卡卡西2020/03/12 12:39:56

如果您正在使用CLI运行webpack-dev-server,则可以通过传递devServer对象的webpack.config.js对其进行配置:

module.exports = {
  entry: "index.js",
  output: {
    filename: "bundle.js"
  },
  devServer: {
    historyApiFallback: true
  }
}

每当遇到404时,它将重定向到index.html。

注意:如果您使用publicPath,则也需要将其传递给devServer:

module.exports = {
  entry: "index.js",
  output: {
    filename: "bundle.js",
    publicPath: "admin/dashboard"
  },
  devServer: {
    historyApiFallback: {
      index: "admin/dashboard"
    }
  }
}

您可以通过查看输出的前几行来验证所有设置是否正确(带有“ 404s的部分将回退到:path ”)。

在此处输入图片说明