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 相关文章推荐
jquery URL参数判断,确定菜单样式
May 31 Javascript
imgAreaSelect 中文文档帮助说明
Oct 08 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
Nov 08 Javascript
JS delegate与live浅析
Dec 21 Javascript
javascript实现获取字符串hash值
May 10 Javascript
uploadify多文件上传参数设置技巧
Nov 16 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
Apr 05 Javascript
Vue中render方法的使用详解
Jan 26 Javascript
Vue.js样式动态绑定实现小结
Jan 24 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
Apr 11 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
May 13 Javascript
JS前端使用canvas实现物体的点选示例
Aug 05 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中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
正则表达式,替换所有HTML标签的简单实例
2016/11/28 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
[01:10:58]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
python框架django基础指南
2016/09/08 Python
Python自动生产表情包
2017/03/17 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
Django Aggregation聚合使用方法解析
2019/08/01 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
python 实现单例模式的5种方法
2020/09/23 Python
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
网络工程师个人的自我评价范文
2013/10/01 职场文书
财务主管岗位职责
2014/02/28 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
岳庙导游词
2015/02/04 职场文书
党员活动总结
2015/02/04 职场文书
JavaScript流程控制(分支)
2021/12/06 Javascript