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 相关文章推荐
JavaScript修改css样式style
Apr 15 Javascript
JavaScript等比例缩放图片控制超出范围的图片
Aug 06 Javascript
原生javascript实现Tab选项卡切换功能
Jan 12 Javascript
使用AOP改善javascript代码
May 01 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
Sep 12 Javascript
Bootstrap基本组件学习笔记之列表组(11)
Dec 07 Javascript
JavaScrpt判断一个数是否是质数的实例代码
Jun 11 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
Jun 26 jQuery
JS实现的RC4加密算法示例
Aug 16 Javascript
React中阻止事件冒泡的问题详析
Apr 12 Javascript
解决elementui表格操作列自适应列宽
Dec 28 Javascript
Ajax异步刷新功能及简单案例
Nov 20 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
PHP面向对象分析设计的经验原则
2008/09/20 PHP
PHP 观察者模式的实现代码
2013/05/10 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
推荐JavaScript实现继承的最佳方式
2014/11/11 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
node.js中的fs.open方法使用说明
2014/12/17 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
2017/06/19 Javascript
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
Python栈算法的实现与简单应用示例
2017/11/01 Python
Python工程师面试必备25条知识点
2018/01/17 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
python学生管理系统学习笔记
2019/03/19 Python
pandas.cut具体使用总结
2019/06/24 Python
python实现人机猜拳小游戏
2020/02/03 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
Python+unittest+requests 接口自动化测试框架搭建教程
2020/10/09 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
你可能不熟练的十个前端HTML5经典面试题
2018/07/03 HTML / CSS
2014年酒店工作总结范文
2014/11/17 职场文书
优秀团员个人总结
2015/02/26 职场文书
妇产科护理心得体会
2016/01/22 职场文书
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python