file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020-02-13 10:06
1031 查看
最近在学习使用webpack4.0自己搭建vue脚手架,在搭建过程中,踩了许多坑,使用file-loader打包图片文件时就遇到了以下的问题。
这是我的webpack 处理打包图片相关配置项:
... module: { rules: [ ... { test: /\.(jpe?g|png|gif|svg)$/i, use: [ { loader: 'url-loader', options: { limit: 10000, name: '[name].[ext]', outputPath: 'imgs/' } } ] }, ... ] } ...
这个配置也是和目前网上教程差不多的。使用 url-loader
编译图片文件,输出到imgs文件夹下,乍一看也没什么问题,我相信你也是这么认为的。
但是webpack构建之后,会发现,页面上引用的图片都无法正常显示:
图片引用错误
打开控制台,会发现所有图片的路径都变成了 [object module]
object module
经过一番努力的探索,终于在stackoverflow上找到了 相应的问题
下方回答我翻译下:
默认情况下,file-loader生成使用ES模块语法的JS模块。在某些情况下,使用ES模块是有益的,比如在模块连接和树抖动的情况下。
file-loader-options
简而言之就是file-loader新版本默认使用了esModule语法,造成了引用图片文件时的方式和以前的版本不一样,通过查看其仓库的release会发现:在v4.3.0版本就引入这一新特性。
file-loader-versions
那如何解决这一问题呢?在刚才的stackoverflow问题回答里说明了有两种解决方法:
在引用图片时,加个 .default
后缀
<img src="require('assets/logo.png').default"/>
在webpack的file-loader配置项里,设置esModule为false
{ test: /\.(jpe?g|png|gif|svg)$/i, use: [ { loader: 'file-loader', options: { esModule: false } } ] }
两种方法对比起来,显而易见,相信你已经知道了哪个方法更好用。于是我修改了webpack配置后,再编译,就没问题啦:wink:。
build-success
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- vue webpack打包后.css文件里面的背景图片路径错误解决方法(转)
- vue-cli打包本地查看路径问题(webpack打包后.css文件里面的背景图片路径错误解决方法)
- 关于图片路径打包为 src= "[object Module]" 的解决方法
- webpack打包后直接访问页面图片路径错误的解决方法
- react打包后图片和资源路径错误的解决方法
- vue-cli 项目 webpack打包后图片路径错误的解决方法
- 解决vue项目打包后提示图片文件路径错误的问题
- vue webpack打包后图片路径错误的完美解决方法
- vue-cli中打包图片路径错误的解决方法
- Win7中Javascript读取File框中文件路径变更为C:\Fakepath的解决方法
- “编译器错误信息: CS0016: 未能写入输出文件”解决方法
- asp输出xml格式文件时的一个诡异错误及解决方法:XML declaration allowed only at the start of the document
- iis发布.net网站 编译器错误信息: CS0016: 未能写入输出文件 解决方法
- webpack打包vue项目后,一些文件图片路径找不到的问题解决办法
- 齐枭飞 Vue系列--vue的图片路径,和背景图片路径打包后错误解决
- 关于写入文件缓存时报"java.io.FileNotFoundException open failed (is a director)"错误的解决方法
- 上传图片input-file表单元素值为C://fakepath,不能得到本地真实路径解决方法
- eWebeditor编辑器上传图片路径错误解决方法[疑难杂症]【转,作者:unvs】
- 【转】编译器错误信息: CS0016: 未能写入输出文件”解决方法
- 解决Vue打包后背景图片路径错误问题