Umi: 打包静态文件之后部署报404的问题

Created on 5 Apr 2018  ·  10Comments  ·  Source: umijs/umi

背景 : 第一次用umi 这个框架 还不是很熟悉

"dva": "^2.1.0",
"path-to-regexp": "^2.2.0",
"prop-types": "^15.6.1",
"rc-form": "^2.1.7",
"react": "^16.2.0",
"umi": "^1.0.0-0",
"umi-plugin-dva": "^0.1.5"

webserver: nginx

刚开发完一个 小东西现在打包完部署的时候直接访问 之前的路由 /user/login 报404

domain/xxx/user/login 其中 xxx是服务器上的一个文件夹 现在访问这个地址 静态资源加载都没有问题 只是访问之前设定好的路由 会 404

image

查了一些资料

image
对于一个小白来说 有点不太知道这个BASE_URL应该加到哪里 略显尴尬 。。。

image
第一个方案试了 打包完之后还是一样的效果 还是404
第二个方案试了 打包的时候直接报错 报错如下图
image
第三个方案 没明白 这句话啥意思 服务端配置路由 fallback 到 index.html

然后还查到了一个issue issue190
这里面的index.js 没懂是 pages文件夹下的index.js 吗 ? 这个我是有的
然后还在.umirc.js中加上了 hashHistory: true 打包之后还是不好使

.umirc.js文件中 :
image

.webpackrc.js文件中:
image

现在试了好多次 打包之后的部署 还是不能正常访问之前指定好的路由

domain/xxx/user/login 想访问这个路径 还是不可以

Most helpful comment

在一个大神的帮助之下 得以解决 有遇到类似问题的 可以来咨询 这个帖子留在这 就先关了

你的问题已经解决,又不给出你的方式,然后又把问题关闭,这样合适吗?

All 10 comments

在一个大神的帮助之下 得以解决 有遇到类似问题的 可以来咨询 这个帖子留在这 就先关了

@feivorid 怎么解决的,可以贴一下么?

@ShaneKing 有啥问题,可以提出来。

@sorrycc 既然大神发话了,我就问几个小白问题了。
是不是放到nginx中,必须exportStatic?不能一个index.html?
不然直接在地址栏输入localhost/xxx/yyy/zzz就会报404?
还有如果使用了变量路由,是不是不能exportStatic?

也可以一个 index.html,然后在 nginx 里配置路由 fallback 到这个 index.html 。

    location / {
        try_files $uri @fallback;
    }
    location @fallback {
        rewrite .* /index.html break;
    }

@sorrycc
大神说的应该上面这种对吧?

网上还搜到其它的变种

location / {
  try_files $uri $uri/ /index.html;
}
location /{
  try_files $uri /index.html;
}

在config.js或者.umirc.js添加hashHistory: true都不被允许
image

在一个大神的帮助之下 得以解决 有遇到类似问题的 可以来咨询 这个帖子留在这 就先关了

你的问题已经解决,又不给出你的方式,然后又把问题关闭,这样合适吗?

这种issue有什么用?

目前我也遇到这个问题,最终解决方案是在 config.js 文件里加个配置(umi3)
history: { type: 'hash' }
因为umi默认的是 type=browser
但是这个问题就很奇怪,为什么只有hash路由可以
@sorrycc

Was this page helpful?
0 / 5 - 0 ratings

Related issues

mizi-lin picture mizi-lin  ·  3Comments

liuxinqiong picture liuxinqiong  ·  3Comments

miaojinxing picture miaojinxing  ·  3Comments

sorrycc picture sorrycc  ·  4Comments

stoneWeb picture stoneWeb  ·  3Comments