vue 打包後找不到資源文件

前一段時間我們寫了一個項目,在本地是好的,但是布到線上發現有些字體圖標找不到,然後就各種找問題,最後確認是資源文件路徑沒引用正確導致的,
下拉框的字體變成小方塊
怎麼解決呢:
1、在build的utils文件中配置
原來是

if (options.extract) {
      loaders.push(MiniCssExtractPlugin.loader)
    } else {
      loaders.push('vue-style-loader')
    }

改成

if (options.extract) {
   return ExtractTextPlugin.extract({
     use: loaders,
     publicPath:'../../',           // 此處添加
     fallback: 'vue-style-loader'
   })
 }

或者
2、在config的index.js中的, 原因是vue項目打包後樣式目錄結構變爲static/css

 assetsPublicPath: '/',
  //改爲
 assetsPublicPath: '../../',

或者
3、在build的 webpack.base.conf.js 文件中配置
打包前:路徑是http://localhost:8080/static/…
打包後:路徑是/dist/static/css/static/fonts/iconfont.1a028ec.woff

百思不得其解的是-上面文件的實際位置在:/dist/static/fonts/iconfont.1a028ec.woff

一頓網上搜索終於找到一個有用的答案:參考官方文檔url-loader

當文件的大小小於limit的值時,使用base64進行轉碼,你可以在打包好的css中進行查證,看所引用的字體和圖片是不是base64格式的,如果大於limit的值,就使用file-loader進行解析,不會使用base64,而是採用路徑引入。

修改 limit的值,將其值變大 10000000

{
  test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
   loader: 'url-loader',
   options: {
     limit: 10000,
     name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
   }
 }
改爲
{
   test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
   loader: 'url-loader',
   options: {
     limit: 10000,
     // name: utils.assetsPath('fonts/[name].[hash:7].[ext]'),
     name: ('[name].[hash:7].[ext]'),
     publicPath: '../fonts',
     outputPath: utils.assetsPath('fonts/')
   }
 }      

希望對各位老鐵有用!!!!!!!!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章