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 相关文章推荐
js获取html参数及向swf传递参数应用介绍
Feb 18 Javascript
Node.js开发之访问Redis数据库教程
Jan 14 Javascript
js父页面中使用子页面的方法
Jan 09 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
Oct 18 Javascript
vue.js路由跳转详解
Aug 28 Javascript
详解angular脏检查原理及伪代码实现
Jun 08 Javascript
浅谈javascript中的prototype和__proto__的理解
Apr 07 Javascript
转换layUI的数据表格中的日期格式方法
Sep 19 Javascript
微信小程序音乐播放器开发
Nov 20 Javascript
jQuery操作元素的内容和样式完整实例分析
Jan 10 jQuery
JS实现多功能计算器
Oct 28 Javascript
react项目从新建到部署的实现示例
Feb 19 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
BBS(php &amp; mysql)完整版(八)
2006/10/09 PHP
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
jquery等待效果示例
2014/05/01 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
Vue.js组件使用props传递数据的方法
2019/10/19 Javascript
python服务器端收发请求的实现代码
2014/09/29 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
Python 下载及安装详细步骤
2019/11/04 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
pandas将list数据拆分成行或列的实现
2020/12/13 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
网络通讯中,端口有什么含义,端口的取值范围
2012/11/23 面试题
数学专业推荐信范文
2013/11/21 职场文书
护理学专业推荐信
2013/12/03 职场文书
校园达人秀策划书
2014/01/12 职场文书
母亲七十大寿答谢词
2014/01/18 职场文书
教师业务学习制度
2014/01/25 职场文书
2014年党务工作总结
2014/11/25 职场文书
幼儿园新生开学寄语
2015/05/27 职场文书
2019商业计划书格式、范文
2019/04/24 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server