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 相关文章推荐
用JTrackBar实现的模拟苹果风格的滚动条
Aug 06 Javascript
js 解决“options为空或不是对象”
Dec 22 Javascript
javascript 系统文件夹文件操作及参数介绍
Jan 08 Javascript
AngularJS入门教程之Hello World!
Dec 06 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
Jun 19 Javascript
js模仿java的Map集合详解
Jan 06 Javascript
Vue.js每天必学之计算属性computed与$watch
Sep 05 Javascript
Bootstrap源码解读网格系统(3)
Dec 22 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
Jan 12 Javascript
jquery.uploadView 实现图片预览上传功能
Aug 10 jQuery
超出JavaScript安全整数限制的数字计算BigInt详解
Jun 24 Javascript
基于Vue实现微信小程序的图文编辑器
Jul 25 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文本转图片自动换行的方法
2013/03/13 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
php使用curl详细解析及问题汇总
2016/08/11 PHP
javascript事件模型代码
2007/07/01 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
python中list循环语句用法实例
2014/11/10 Python
python获取android设备的GPS信息脚本分享
2015/03/06 Python
Python2.x中文乱码问题解决方法
2015/06/02 Python
Python ValueError: invalid literal for int() with base 10 实用解决方法
2015/06/21 Python
深入理解Python中的*重复运算符
2017/10/28 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
python用插值法绘制平滑曲线
2021/02/19 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
python 瀑布线指标编写实例
2020/06/03 Python
基于Tensorflow的MNIST手写数字识别分类
2020/06/17 Python
Otel.com:折扣酒店预订
2017/08/24 全球购物
4s店机修工岗位职责
2013/12/20 职场文书
给实习单位的感谢信
2014/02/01 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
2014年党务公开实施方案
2014/02/27 职场文书
公司年会搞笑主持词
2014/03/24 职场文书
社区活动总结
2015/02/04 职场文书
运动会通讯稿200字
2015/07/20 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS
Python自然语言处理之切分算法详解
2021/04/25 Python
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript