webpack?打包后圖片加載報(bào)錯(cuò)的解決辦法
使用webpack打包后,圖片沒(méi)有加載出來(lái),頁(yè)面空白,報(bào)錯(cuò)圖片引用的路徑不對(duì)
解決辦法:
1.找到config->index.js
將 assetsPublicPath: '/', 改為 assetsPublicPath: './'
build: { index: path.resolve(__dirname, '../dist/index.html'), assetsRoot: path.resolve(__dirname, '../dist'), assetsSubDirectory: 'static', assetsPublicPath: '/', // 改為 assetsPublicPath: './' …… }
2.build->utils.js
找到下面這個(gè)函數(shù)的代碼。
在if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader',
publicPath:'../../'
})
}
代碼里添加 publicPath:'../../'
function generateLoaders (loader, loaderOptions) { const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader] if (loader) { loaders.push({ loader: loader + '-loader', options: Object.assign({}, loaderOptions, { sourceMap: options.sourceMap }) }) } // 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:'../../' // 添加 publicPath:'../../' }) } else { return ['vue-style-loader'].concat(loaders) } }
有的問(wèn)題使用第一種辦法就可以解決,我有些圖片放在全局,全局的圖片沒(méi)有打包出來(lái),添加了第二種解決辦法,圖片解決了。
補(bǔ)充:
webpack 打包圖片文件
一、準(zhǔn)備工作
1. 在src文件夾中新建一個(gè)img文件夾,并且在里面放兩張圖片;
2.在css文件中引用圖片,從而讓webpack能夠知道這個(gè)圖片也是要打包的;
二、 使用url-loader和file-loader
能打包圖片的loader有url-loader、file-loader;二者的區(qū)別在于當(dāng)圖片的大小>url-loader中的limit時(shí),那么webpack會(huì)選擇使用file-loader來(lái)打包。關(guān)于如何在webpack中文官網(wǎng)找到loader并且如何使用請(qǐng)看我的其他文章。
1. 接下來(lái)看一下詳細(xì)的url-loader配置:
重點(diǎn)放在options中的limit和name, limit的作用就是當(dāng)要打包的圖片大小>limit設(shè)置的值時(shí),會(huì)使用file-loader進(jìn)行打包。name的作用是對(duì)打包生成的圖片文件進(jìn)行命名規(guī)約;我來(lái)詳細(xì)解釋一下: img/的作用是在dist目錄下會(huì)新建一個(gè)img文件夾用于存放圖片;[name]是使用圖片原本的名稱;[hash:8]是通過(guò)哈希函數(shù)將圖片的名字進(jìn)行計(jì)算,然后取前8位;[ext]就是圖片文件本身的后綴名。[name].[hash:8].[ext]就是用來(lái)生成文件名的,所以打包后圖片最終的效果就是這樣了:
注意點(diǎn)1:那就是這個(gè)name它是使用file-loader打包才會(huì)有的效果哦,如果是url-loader進(jìn)行打包,那么打包好的圖片不會(huì)按照name的規(guī)則來(lái)生成,這個(gè)要注意一下。
注意點(diǎn)2: 因?yàn)榇虬玫膱D片輸出位置是在dist文件夾中,所以還需要一個(gè)配置:publicPath='dist/'
老實(shí)說(shuō)我還沒(méi)有辦法說(shuō)清楚它,但是加上去才能成功打包,所以先加上,等我后面知曉了它的作用我會(huì)補(bǔ)上它的作用的。
到此這篇關(guān)于webpack 打包后圖片加載報(bào)錯(cuò)的解決辦法的文章就介紹到這了,更多相關(guān)webpack 打包出錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序?qū)崿F(xiàn)簡(jiǎn)單的select下拉框
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)簡(jiǎn)單的select下拉框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11基于JavaScript實(shí)現(xiàn)微信搶紅包功能
本文通過(guò)實(shí)例代碼給大家介紹了基于JavaScript實(shí)現(xiàn)微信搶紅包功能,金額隨機(jī),額度在0.01和(剩余平均值*2)之間,具體的實(shí)例代碼大家參考下本文2017-07-07學(xué)習(xí)JavaScript一定要知道的3個(gè)小技巧
這篇文章主要給大家分享的是學(xué)習(xí)JavaScript一定要知道的3個(gè)小技巧,通常在 Angular 或 React 項(xiàng)目中,code review 時(shí)看到一些老式的 JavaScript 代碼,就會(huì)將開(kāi)發(fā)人員歸類為初學(xué)者,下面我們就來(lái)一起看看初學(xué)者需要知道的三個(gè)小技巧,需要的朋友可以參考一下2021-12-12Js實(shí)現(xiàn)動(dòng)態(tài)添加刪除Table行示例
這篇文章主要介紹了Js動(dòng)態(tài)添加刪除Table行的具體實(shí)現(xiàn),需要的朋友可以參考下2014-04-04js實(shí)現(xiàn)鼠標(biāo)懸停圖片上時(shí)滾動(dòng)文字說(shuō)明的方法
這篇文章主要介紹了js實(shí)現(xiàn)鼠標(biāo)懸停圖片上時(shí)滾動(dòng)文字說(shuō)明的方法,涉及js操作鼠標(biāo)事件的使用技巧,需要的朋友可以參考下2015-02-02