webpack-dev-server、historyApiFallback 不起作用(webpack-4、react-router-4)

2024-01-11

我正在使用 webpack 4 测试 React-router 4,但无法获取 webpack-dev-server 的设置:

{historyApiFallback: true}

上班。这个用法在 webpack3 中工作得很好,所以我不确定出了什么问题......这是我的 webpack.config.js:

const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = () => {
  return {
    mode: 'development',
    devtool: 'source-map',
    devServer: {
      port: 8888,
      historyApiFallback: true,
      stats: 'minimal'
    },
    resolve: {
      extensions: ['*', '.mjs', '.js', '.jsx']
    },
    module: {
      rules: [
        {
          test: /\.m?jsx?$/,
          exclude: /(node_modules)/,
          use: {
            loader: 'babel-loader'
          }
        }
      ]
    },
    plugins: [
      new HtmlWebpackPlugin({
        title:'React Lab',
        template: 'src/index.html'
      })
    ]
  }
}

这是我使用react-router4的简单react应用程序:

import React from 'react';
import ReactDOM  from 'react-dom';
import {
  BrowserRouter as Router,
  Route,
  Link,
  Switch
} from 'react-router-dom';

const mountNode = document.getElementById('app');

const App = () => (
  <Router>
    <div>

      <ul>
        <li><Link to="/">Link to: /</Link></li>
        <li><Link to="/page1">Link to: /page1</Link></li>
        <li><Link to="/page2">Link to: /page2</Link></li>
        <li><Link to="/does/not/exist">Link to: /does/not/exist</Link></li>
      </ul>
      <button onClick={()=>{location.reload();}}>reload page</button>

      <Switch>
        <Route exact path="/"      component={()=>(<h2>home</h2>)} />
        <Route exact path="/page1" component={()=>(<h2>page1</h2>)} />
        <Route exact path="/page2" component={()=>(<h2>page2</h2>)} />
        <Route                     component={()=>(<h2>no match</h2>)} />
      </Switch>

      <Route path="/" component={(props) =><div>{`props.location.pathname: ${props.location.pathname}`}</div>} />

    </div>
  </Router>
);

ReactDOM.render( <App/>, mountNode

导航至:

<Link to="/does/not/exist" /> 

然后单击

<button>reload page</button>

webpack 开发服务器无法重定向到 main.js

github上的完整代码如下:https://github.com/ApolloTang/webpack-dev-server-history-api-fall-back-not-working https://github.com/ApolloTang/webpack-dev-server-history-api-fall-back-not-working.

任何帮助或评论将不胜感激。


事实证明,我在 webpack.config.js 中缺少 output.publicPath:

output: {
  //  must specified output.publicPath otherwise
  //  devServer.historyApiFallback will not work
  publicPath: '/'
},

使用上面指定的output.publicPath,historyApiFallback 可以工作。

我不记得我在哪里读过说output.publicPath是webpack4配置中的可选选项,但它确实需要与webpack-dev-server一起使用。

文档位于https://webpack.js.org/configuration/output/#output-publicpath https://webpack.js.org/configuration/output/#output-publicpath said:

webpack-dev-server 还从 publicPath 中获取提示,用它来 确定从哪里提供输出文件。

但我不明白这与historyApiFallback 有什么关系。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

webpack-dev-server、historyApiFallback 不起作用(webpack-4、react-router-4) 的相关文章

随机推荐

  • 将多个文本文件导入 Matlab 来分析数据 [重复]

    这个问题已经存在了 我对matlab确实是个新手 所以我正在努力学习最基本的知识 我有 8 个 tsv 文件 名称如 2004 07 01 0000 tsv 2004 07 01 0300 tsv 其中每个文件有 72 行和 144 列 我
  • 在 IIS 上使用 PHP 进行 Windows 身份验证

    我正在开发一个在 IIS 上用 PHP 构建的 Intranet 应用程序 我想通过使用 Windows 身份验证将用户名自动从浏览器传递到 IIS 来针对 AD 进行身份验证 有办法做到这一点吗 是的 IIS 支持集成 Windows 身
  • 从经典 ASP 连接到 SQL Server 2008 的命名实例

    我的 ASP 应用程序可以毫无问题地连接到安装了 SQL Server 2000 的网络服务器 有效的旧代码 myConn Open Driver SQL Server Server myNetwrkServer Database myDB
  • 如何在 ASP.NET 中使用 C# 从数据库检索二进制图像

    我需要从数据库中检索二进制图像 我的疑问如下 SqlConnection con new SqlConnection Data Source localhost Initial Catalog MyGames Integrated Secu
  • CentOS 上 Laravel 的权限问题

    我已将 laravel 存储库克隆到我的 CentOS 7 机器上 当我尝试运行它时 出现 500 错误且没有任何显示 所以我检查一下 var log httpd error log我发现我遇到了一些权限错误 Mon May 16 11 3
  • 如何使用代码实现关机

    有没有一种方法可以使用代码关闭手机 我对此一无所知 希望有人给我一些建议 或者示例 代码 api 谢谢 这是一个完整的例子 https github com rbochet AutoShutdown https github com rbo
  • 如何从这种关系中选择条目?

    我有这四个表 提要 提要条目 条目类别和类别 有了这些结构 CREATE TABLE categorias id int 11 NOT NULL auto increment nome varchar 100 collate utf8 un
  • Chrome 会阻止不同来源的请求

    当脚本尝试从不同来源访问框架时 Chrome 会阻止它并抛出异常 如下所示 未捕获的安全错误 阻止具有来源 提供商域 的框架访问具有来源 mydomain 的框架 协议 域和端口必须匹配 在 google chrome 进行一些更新后 我收
  • 如何让程序等待 JavaScript 中的变量更改?

    我想强制 JavaScript 程序在执行的某些特定点等待 直到变量发生更改 有办法做到吗 我已经找到了一个名为 narrative JavaScript 的扩展 它强制程序等待事件发生 有没有办法创建一个新事件 例如 变量更改事件 其行为
  • PHP多维数组转无序列表,建立url路径

    我在 PHP 中有一个多维数组 由 icio 和 ftrotter 的优秀示例生成 我在数组变体中使用 ftrotterrs 数组 将数据库结果转为数组 https stackoverflow com questions 2794638 t
  • 在哪里/如何下载(并安装)适用于 Windows 8 64 位的 Microsoft.Jet.OLEDB.4.0?

    我有一个使用 Jet OLEDB 4 0 的 32 位 net 2 0 应用程序 它可以在 Windows 8 32 位上运行 但不能在 64 位上运行 在 64 位上我收到错误 Microsoft Jet OLEDB 4 0 提供程序未在
  • PHP 检测 PNG8 或 PNG24

    我需要一种简单的方法来检测正在上传的 PNG 内容 我尝试了 getimagesize 但它返回 PNG8 和 PNG24 的位 8 任何人都知道如何检测图像是否为 PNG8 又名位深度为 8 谢谢 尝试检测 PNG8 PNG24 和 PN
  • NSCoding协议问题

    我想将归档 NSCoding 协议添加到我的模型类中 然后我实现这两种方法encodeWithCoder NSCoder coder and initWithCoder NSCoder coder MyModelClass 有 2 个实例变
  • setlocale 在 Windows 上卡住

    setlocale LC ALL uk UA 有时我会因未知原因而挂起 陷入僵局 调用堆栈是 ntdll dll ZwWaitForSingleObject 12 Unknown ntdll dll RtlpWaitOnCriticalSe
  • FlatList numColumns 似乎工作不正常?

    我正在尝试使用 FlatList 以网格格式向某人显示一堆用户头像 但它最终看起来非常奇怪 我似乎不知道如何修复它 这是它的样子 https i stack imgur com j3nAP png 我的 FlatList 代码如下所示
  • 在 Eclipse 中,我可以在垂直堆栈而不是水平堆栈中查看当前打开的文件吗?

    如果选项卡显示编辑器中的哪些文件是垂直堆叠而不是水平堆叠 我会发现更容易 水平堆叠意味着您会很快耗尽显示文件名的空间 并且导致文件之间的切换非常耗时 是否有选项或插件可以垂直显示文件 类似于导航器 但针对打开的文件而不是项目文件 我似乎找不
  • 重新加载php页面的一部分而不刷新整个页面

    我使用 Wordpress 作为内容管理系统 我的模板有一个 divbox类 并包含一个下拉列表 我的目标是获取此下拉列表的值并使用该值在ajax方法中查询帖子 然后重新加载boxdiv 使用 ajax 为了更清楚这里是标记
  • 如何在Python中执行逻辑套索?

    scikit learn 包提供了以下功能Lasso and LassoCV 但没有选择拟合逻辑函数而不是线性函数 如何在 python 中执行逻辑套索 Lasso 通过 L1 惩罚优化最小二乘问题 根据定义 您无法使用 Lasso 优化逻
  • SQL Server 中变量名区分大小写? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 当我执行这种格式的 SQL 命令时 SP HELPTEXT Sproc1 结果集将显示Could not find stored procedure
  • webpack-dev-server、historyApiFallback 不起作用(webpack-4、react-router-4)

    我正在使用 webpack 4 测试 React router 4 但无法获取 webpack dev server 的设置 historyApiFallback true 上班 这个用法在 webpack3 中工作得很好 所以我不确定出了