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 相关文章推荐
通过Unicode转义序列来加密,按你说的可以算是混淆吧
May 06 Javascript
JavaScript的继承的封装介绍
Oct 15 Javascript
浅析JavaScript中的typeof运算符
Nov 30 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
Mar 07 Javascript
微信端开发--登录小程序步骤
Jan 11 Javascript
微信小程序中子页面向父页面传值实例详解
Mar 20 Javascript
微信小程序实现自定义加载图标功能
Jul 19 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
Dec 04 Javascript
微信小程序模板消息推送的两种实现方式
Aug 27 Javascript
Ajax获取node服务器数据的完整步骤
Sep 20 Javascript
javascript实现移动端轮播图
Dec 09 Javascript
JavaScript实现贪吃蛇游戏
Jun 16 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
php与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
PHP类与对象中的private访问控制的疑问
2012/11/01 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
jquery弹出层类代码分享
2013/12/27 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
python中反射用法实例
2015/03/27 Python
Python制作Windows系统服务
2017/03/25 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
python tkinter实现界面切换的示例代码
2019/06/14 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
函授生自我鉴定
2014/03/25 职场文书
服务行业口号
2014/06/11 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技