解決Vue項目打包后打開index.html頁面顯示空白以及圖片路徑錯誤的問題
2018年05月23日 10:05:35?for_weber?閱讀數:14179
? ? Vue項目運行npm run build后會生成一個dist文件夾,我們一般都是把這個文件夾部署到服務器上。dist文件夾里邊有一個static文件和一個index.html頁面,這個index就是最后單頁面的最終文件。
?問題一:我在打包完成后,打開index.html文件發現地址并沒有攜帶路由。
這樣的話頁面就是空白了,因為沒有組件被添加到頁面中。打開F12會看到一堆的紅色failed請求。打開請求地址是這樣的。
????進入D盤就開始尋找static文件夾當然是找不到的。既然知道了是打包之后尋找文件的地址錯誤,就去config文件夾下的index.js中尋找問題。index.js中的build命令的配置有一個屬性叫assetsPublicPath,它的值為‘/’。意思是根目錄,這時會從index.html所在的硬盤的根目錄下開始查找,自然無法找到。解決辦法:
? ? 改為‘./’這時就不再是絕對路徑的根目錄了,而是改為了相對路徑,同目錄下進行查找。再次打包,頁面基本正常。
問題二:我再次打包后,頁面可以正常打開。但是頁面上的一些圖片請求失敗。
我這里請求失敗的都是背景圖片,而且只是某一些失敗。我一直有一個疑惑就是為什么同一個css文件中的背景圖片請求有的成功有的失敗,要知道我的圖片都是放在同一個文件夾下邊的。目前這個疑惑還沒有解決。
打開某一個失敗的請求,我們會發現請求的路徑是這樣的。
????也就是說這個css文件是從當前文件夾下往里尋找static/img/XXX.png,要知道static文件夾是在dist根目錄下邊的,因此,我們需要修改build的全局配置,改變css文件的文件請求路徑。css文件在static里邊的css文件夾中,因此需要先‘../../’出到dist根目錄下,然后再static/img/XXX.png,就可以正確找到對應的圖片文件。
解決辦法:
? ? 修改build文件夾下邊的utils.js文件。
再文件相同的if語句下添加下圖中選中的代碼。
? ? 重新打包,即可解決圖片找不到的問題。