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
可选 browser
、hash
和 memory
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错误的几种解决方法