本文首發於yoowin.me,歡迎訪問!html
vue-cli構建的項目,npm run dev
時看到的頁面對應的是npm run build
以後dist
文件夾中的index.html文件,而不是項目根目錄下的index.html文件。vue
我第一次使用vue-cli構建的項目,在npm run build
以後,在本地打開dist
文件夾中的index.html文件,頁面是空白的。而在本地npm run dev
是徹底沒有問題的。更令我鬱悶的是push到github上面時,dist
文件都沒了。git
一番摸索以後,終於找到了問題緣由,咱們逐一分析這兩個問題。github
對比github上和本地文件以後,發現最重要的dist
文件沒有被提交到github上,以下圖vue-cli
dist
文件是npm run build
執行後被編譯打包生成的文件,CSS、JS、圖片等文件都在dist
文件中,因此該文件必需要提交到github上。npm
在項目根目錄下有一個.gitignore
文件,文件中設置一些文件名,對應的文件將不會被提交到github上面。bash
在.gitignore
文件中,確實有dist
文件名,以下圖服務器
把.gitignore
文件中的dist
文件名刪除,而後從新push到github上就有了dist
文件網站
解決完上面dist
文件的問題以後,打開該文件路徑下的github pages預覽地址,仍是顯示空白頁,以下圖ui
咱們查看控制檯,能夠看到文件的路徑都出現了問題,以下圖
這裏解釋一下路徑問題中/
、./
、../
的區別:
/
/
開頭的路徑就是絕對路徑,/
是指根目錄,這裏的根目錄在本地就是指磁盤,在github上面就是指倉庫的根目錄,在網站上就是指服務器的根目錄./
./
開頭的路徑是相對路徑,相對的是自身文件所在的目錄,以下兩種狀況是沒有區別的./image/author.png
image/author.png複製代碼
../
../
是相對與自身文件的上級目錄,屬於相對路徑因此上圖中的路徑就出在路徑前面的/
,/
表示根目錄,咱們總不能把static文件移動到根目錄,這樣就太傻了。
因此咱們要找到配置文件更改下路徑,找到config/index.js
文件,以下圖
修改圖中assetsPublicPath的參數,每次npm run build
後的文件路徑將會按照參數生成,兩種設置方法:
assetsPublicPath: './'
或
assetsPublicPath: ''
這樣設置以後,再次npm run build
,從新push到github上面,打開<your name>.github.io/<repositories>/dist/index.html
就能看到預覽頁了
每次的踩坑都是不可預知的,但解決以後是鍛鍊人的,也是有些許成就感的。這裏總結一下此次遇到的問題,但願能夠幫到其餘人。