vue动态加载图片问题,报错Cannot find module "."

正常在<img>标签加载图片的方式是

<img src="../assets/product2.jpg" alt="">

但是在vue中动态加载图片,直接用src是无效的,需要使用v-bind动态加载

<img :src="product.imgSrc" alt=""> //正确
<img :src="../assets/product2.jpg" alt=""> //直接使用字符串报错,src应该是变量

 但是 :src的值product.imgSrc = "../assets/product2.jpg",图片仍然无法加载出来,需要使用require才可以。

但是,如果你这么使用require

src="../assets/product2.jpg";
imgSrc = require("../assets/product2.jpg")

还是会报错

Error: Cannot find module "."
    at webpackMissingModule (IndexPage.vue?d485:138)
    at VueComponent.eval (IndexPage.vue?d485:138)

因为require它是打包工具所需要的标识,你搞成运行时通过变量去定义的话,它就没办法打包了啊,

require里的正确的格式必须是path,可以这么写:

var src = "product2.jpg";
 
let imgSrc = require('../assets/'+imgUrl);

此外,你还可以使用以下方法去解决这个问题:

解决方案1背景图的方式

<div :style="{backgroundImage: 'url(' + imgPath + ')'}"></div>

解决方案3: 静态图片的方式

把图片放到src同级的static目录(build/build.js文件中有一段代码是把static目录拷贝到dist/static的),比如图片放在static/a.png

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值