vue-cli打包構建時常見的報錯解決方案


報錯1:vue-cli項目本地npm run dev啟動后,chrome打開是空白頁

1
< strong >  解決方案</ strong >:將config下的index.js中的assetsPublicPath路徑都設置為‘/’絕對路徑

報錯2:打包后想要在本地file(直接打開index.html)中打開,但是打開是空白頁

1
< strong >  解決方案</ strong >:將config下的index.js中的assetsPublicPath路徑都設置為‘./’相對路徑

報錯3:打包后丟到服務器中,打開是空白頁

1
< strong > 解決方案</ strong >:將config下的index.js中的assetsPublicPath路徑都設置為‘./’相對路徑

報錯4:打包后在瀏覽器中打開,報錯ERROR in xxx.js from UglifyJs

  這種錯誤是由於部分或全部es6語法轉es5失敗了,需要安裝並在webpack中配置babel-loader,具體請參考此解決方案:https://segmentfault.com/a/1190000011212544

報錯5:打包后打開頁面控制台報錯,Uncaught RangeError: Maximum call stack size exceeded

  報錯內容是堆棧溢出,就是大量內存被占用,導致內存溢出,我碰到的場景是在全局路由鈎子里(router.beforeEach)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 全局導航鈎子
router.beforeEach((to, from, next) => {
   // 判斷cookie是否過期,否則直接跳轉到登錄頁
   var  getCookie = common.getCookie( 'userInfo' )
   if  (!getCookie) {
     console.log(to.path)
     if  (to.path ===  '/login' ) {  // 如果是登錄頁面路徑,就直接next()
       next()
     else  // 不然就跳轉到登錄
       next( '/login' )
     }
   else  {
     next()
   }
})
// 需要弄明白,一定要調用next()方法,然后注意,next方法傳參和傳參的不同,傳參的時候會再次進入路由鈎子,而直接調用next()就不會了,這里容易出現n多次循環就導致堆棧溢出而報錯。

  

報錯6:打包后打開發現很多圖片(背景圖片等)路徑打包錯誤,訪問不到

  終極解決辦法:找到build目錄下的utils.js文件,添加一行代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
// Extract CSS when that option is specified
     // (which is the case during production build)
     if  (options.extract) {
       return  ExtractTextPlugin.extract({
         use: loaders,
         fallback:  'vue-style-loader' ,
          // 添加此行代碼,解決所有圖片,字體路徑問題
         publicPath: '../../'
       })
     else  {
       return  [ 'vue-style-loader' ].concat(loaders)
     }
   }  

 

 

 

 

 

轉載自:https://www.cnblogs.com/hjvsdr/p/8064880.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM