Umi&React打包部署项目刷新报404错误的几种解决方法

Umi 打包部署到服务器,刷新页面会报 404 错误,这个问题一般是服务端来处理的,比如 Nginx 代理重定向

Umi 官方也提供了解决方法,下面一一介绍一下。

1、改用 hashHistory

在配置文件 .umirc.js 中增加一行配置:

history: { type: 'hash' },

修改后路由中会由 w3h5.com/index 变成 w3h5.com/#/index ,多了一个 # 号,极不优雅,根据自己的需求做取舍把。

history 参数是一个 object 对象,默认值是 { type: 'browser' } ,用来配置 history 类型和配置项。如果只需要修改类型,也可以写成上面的形式。

除了 type 之外,该参数还包含 options 子配置项,下面是子项的简单说明:

type 可选 browserhashmemory

options 传给 create{{{ type }}}History 的配置项,每个类型器的配置项不同

还可以参考:配置 history 类型和配置项

注意:

options 中,getUserConfirmation 由于是函数的格式,暂不支持配置

options 中,basename 无需配置,通过 umi 的 base 配置指定

2、静态化

在一些场景中,无法做服务端的 html fallback,即让每个路由都输出 index.html 的内容,那么就要做静态化。

在配置文件 .umirc.js 中增加一行/配置:

exportStatic: true

然后执行 umi build,会为每个路由输出一个 html 文件。

./dist
├── index.html
├── list
│    └── index.html
└── static
    ├── pages__index.5c0f5f51.async.js
    ├── pages__list.f940b099.async.js
    ├── umi.2eaebd79.js
    └── umi.f4cb51da.css

注意:静态化暂不支持有变量路由的场景。

3、服务端配置路由 fallback 到 index.html

也就是我之前整理的一篇文章,可以做参考:Umi&React打包部署到非根目录及刷新报错404的问题解决


未经允许不得转载:w3h5 » Umi&React打包部署项目刷新报404错误的几种解决方法

赞 (0)
分享到: +

评论 沙发

换个身份

  • 昵称 (必填)
  • 邮箱 (选填)