file-loader打包图片文件时路径错误输出为[object-module]的解决方法


Posted in Javascript onJanuary 03, 2020

最近在学习使用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构建之后,会发现,页面上引用的图片都无法正常显示:

file-loader打包图片文件时路径错误输出为[object-module]的解决方法

图片引用错误

打开控制台,会发现所有图片的路径都变成了 [object module]

file-loader打包图片文件时路径错误输出为[object-module]的解决方法

object module

经过一番努力的探索,终于在stackoverflow上找到了 相应的问题

下方回答我翻译下:

默认情况下,file-loader生成使用ES模块语法的JS模块。在某些情况下,使用ES模块是有益的,比如在模块连接和树抖动的情况下。

file-loader打包图片文件时路径错误输出为[object-module]的解决方法

file-loader-options

简而言之就是file-loader新版本默认使用了esModule语法,造成了引用图片文件时的方式和以前的版本不一样,通过查看其仓库的release会发现:在v4.3.0版本就引入这一新特性。

file-loader打包图片文件时路径错误输出为[object-module]的解决方法

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:。

file-loader打包图片文件时路径错误输出为[object-module]的解决方法

build-success

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 1.5 源码解读 面向中高阶JSER
Apr 05 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
Sep 11 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
Oct 17 Javascript
javascript用函数实现对象的方法
May 14 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
Sep 06 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
Oct 09 Javascript
跟我学习javascript的执行上下文
Nov 18 Javascript
JavaScript取得gridview中获取checkbox选中的值
Jul 24 Javascript
微信小程序中button组件的边框设置的实例详解
Sep 27 Javascript
jQuery 选择器用法基础入门示例
Jan 04 jQuery
vue 子组件和父组件传值的示例
Sep 11 Javascript
JavaScript ES 模块的使用
Nov 12 Javascript
uni-app如何实现增量更新功能
Jan 03 #Javascript
JS实现简单日历特效
Jan 03 #Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
Jan 02 #Javascript
微信小程序地图绘制线段并且测量(实例代码)
Jan 02 #Javascript
Element-UI+Vue模式使用总结
Jan 02 #Javascript
JS代码触发事件代码实例
Jan 02 #Javascript
微信小程序使用自定义组件导航实现当前页面高亮
Jan 02 #Javascript
You might like
用Zend Encode编写开发PHP程序
2010/02/21 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
2013/06/18 PHP
开源php中文分词系统SCWS安装和使用实例
2014/04/11 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
PHP count()函数讲解
2019/02/03 PHP
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
jquery easyui combox一些实用的小方法
2013/12/25 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
jQuery自带的一些常用方法总结
2014/09/03 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
浅谈Django REST Framework限速
2017/12/12 Python
Python SVM(支持向量机)实现方法完整示例
2018/06/19 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
python中hasattr()、getattr()、setattr()函数的使用
2019/08/16 Python
Linux下通过python获取本机ip方法示例
2019/09/06 Python
Python队列、进程间通信、线程案例
2019/10/25 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
Html5 audio标签样式的修改
2016/01/28 HTML / CSS
机工车间主任岗位职责
2014/03/05 职场文书
高校优秀辅导员事迹材料
2014/05/07 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
教师节标语大全
2014/10/07 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
年底个人总结范文
2015/03/10 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python