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 相关文章推荐
一个刚完成的layout(拖动流畅,不受iframe影响)
Aug 17 Javascript
JQuery 学习笔记 选择器之五
Jul 23 Javascript
JavaScript 判断判断某个对象是Object还是一个Array
Jan 28 Javascript
date.parse在IE和FF中的区别
Jul 29 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
May 24 Javascript
JS实现网页滚动条感应鼠标变色的方法
Feb 26 Javascript
全面解析Bootstrap布局组件应用
Feb 22 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
Dec 08 Javascript
JavaScript+HTML5实现的日期比较功能示例
Jul 12 Javascript
jsTree事件和交互以及插件plugins详解
Aug 29 Javascript
JS实现全屏预览F11功能的示例代码
Jul 23 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
Sep 06 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简单实现数字分页功能示例
2016/08/24 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
js+CSS实现弹出居中背景半透明div层的方法
2015/02/26 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
python中mechanize库的简单使用示例
2014/01/10 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
2017/12/14 Python
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
python 两个数据库postgresql对比
2019/10/21 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
退休感言
2014/01/28 职场文书
《记承天寺夜游》教学反思
2014/02/16 职场文书
同志主要表现材料
2014/08/21 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书