項(xiàng)目由dva-cli創(chuàng)建
打包線上包:
npm run build
本地檢查dist包(本人全局安裝了http-server,所以直接啟動,如果有自己server可以更換對應(yīng)命令)
cd dist && http-server
檢查OK沒有問題,部署到服務(wù)器,注意本人沒有部署到服務(wù)器根目錄,而是部署到了一個二級目錄下面
服務(wù)器是ngix服務(wù)器,所有服務(wù)對應(yīng)有配置,要求所有資源指向都指向到dist/index.html里面,具體配置可以找服務(wù)端人員或者自己調(diào)試
server {
listen 80;
server_name www.example.com;
root /path/to/xx/dist;
location / {
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
location * {
try_files $uri $uri/ /index.html =404;
}
}
然后訪問地址:
https:// xxx.xxxx.com/dist/
發(fā)現(xiàn)打開后一片空白,頁面也沒有報(bào)錯,如下圖
白屏代碼.png
然后有點(diǎn)懵逼了,配置了ngix代理了呀,本地打包測試也OK,這可咋整呢?
然后改為hash路由,再次上線服務(wù)器,然后訪問,發(fā)現(xiàn)木有問題呀,那就不是代碼問題了;怎么解決呢?
去dvajs的GitHub主頁去找發(fā)現(xiàn),也有人遇到相同問題,不過回答都不具體明細(xì)
我參考這個解決的https://github.com/dvajs/dva/issues/1650
解決辦法一:
部署到服務(wù)器根目錄;但是如果根目錄是其他項(xiàng)目頁面那么久沒辦法了,只有部署到二級目錄了,二級目錄久只有辦法二了。
解決辦法二:
因?yàn)槭褂玫氖?browserHistory ,默認(rèn) base 是 /
,所以訪問 http://domain/dist,base 是 /dist
,所以匹配不上。
配置base如下:
import { createBrowserHistory as createHistory } from "history";
const app = dva({
history: createHistory({
basename: "/dist"
})
});
本人也通過辦法二解決了,希望對大家有幫助!