vue打包後出現空白頁的原因及解決方式詳解

路由模式 history

新建項目什麼都不動,路由模式:history, 直接npm run build打包

打包之後,直接打開dist文件裡面的ndex.html可以看到頁面是空白的,控制臺是這樣的。

再看看網頁源碼, 對比dist文件夾結構可以看到資源路徑的引入是錯誤的,應該用'./'而不是'/'

那怎麼修改打包之後的路徑呢?查看vue-cli官網配置參考中的publicPath

我們隻需要在和package.json同級的地方新增一個vue.config.js文件,將路徑修改為相對路徑'./'

// vue.config.js
module.exports = {
    publicPath: './',
}

再次打包, 頁面不是空白瞭,但還有很多東西沒顯示完,正常的頁面是這個樣子

打包之後是這樣子

點擊About進行路由跳轉是這樣子

路由模式 hash

改一下路由模式,找到router/index.js文件, 將history修改為hash, 再進行打包

// router/index.js
const router = new VueRouter({
  mode: 'hash',
  base: process.env.BASE_URL,
  routes
})

頁面顯示和路由跳轉就都可以瞭

總結

1. 修改路徑

// vue.config.js
module.exports = {
    publicPath: './',
}

2. 更改路由模式

// router/index.js
const router = new VueRouter({
  mode: 'hash',
  base: process.env.BASE_URL,
  routes
})

路由模式拓展

路由的hash和history模式的區別

  1. 首先hash模式url帶#號,history不帶#號
  2. hash模式前端路由修改的是hash值(#及以後),對後端沒影響,因此改變hash也不會重新加載頁面,比如修改為瞭不存在的#123頁面,頁面不會跳轉;
    history模型剛好相反,沒有對應的頁面就會出現404

打包路由選擇

  • 前端測試用 hash 模式
  • 項目上線不想要url帶#號的話使用history模式,不過使用history模式需要與後端溝通,需後端配置

到此這篇關於vue打包後出現空白頁的原因及解決方式的文章就介紹到這瞭,更多相關vue打包後空白頁解決內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: