vue3项目img标签动态设置src,提示:ReferenceError: require is not defined

1、 问题:

vue3项目中, 动态设置img标签的src属性

<img class="svg" :src="require(`@/assets/imgs/${imgUrl}`)" />

报错:ReferenceError: require is not defined
在这里插入图片描述

2、 解决

<img class="svg" :src='getImgUrl()' />

//js
  let imgUrl = ref('****.png') //动态图片名称
  const getImgUrl = () => {
    const str = imgUrl.value;
    return new URL(`./../imgs/` + str, import.meta.url).href
  }
  //`./../imgs/`: 图片的相对地址
### 解决 Vue3 中 `ReferenceError: require is not defined` 错误 #### 使用 Vite 构建工具时处理图片资源 当使用Vite构建Vue3项目时,传统的`require()`函数不再适用。对于这种情况,推荐采用两种方式来引入静态资源: - **通过`new URL`动态获取文件路径** 此方法适用于按需加载特定资产的情况。例如,在组件内部定义图像源可以这样操作: ```javascript export default { data() { return { bigImg: new URL(&#39;../assets/2.webp&#39;, import.meta.url).href, }; }, } ``` - **利用ESM风格的导入语句** 对于那些希望提前声明并解析依赖关系的情形而言更为合适。具体做法是在脚本顶部加入相应的`import`指令。 ```javascript import imgSrc from &#39;../assets/2.webp&#39;; export default { data() { return { imageSource: imgSrc, }; }, } ``` 上述任一方案都能有效规避因尝试调用未定义全局变量`require`而导致的异常情况[^1]。 #### 处理 Mock 数据模拟中的 Require 定义缺失问题 针对在集成Mock服务过程中遇到相同类型的错误提示,可以在插件配置阶段采取措施确保兼容性。特别地,在`vite-plugin-mock`初始化之前执行一段额外逻辑创建所需的`require`对象实例即可解决问题。 ```javascript // node_modules/vite-plugin-mock/dist/index.mjs import { createRequire } from &#39;module&#39;; const require = createRequire(import.meta.url); ``` 这段代码片段的作用在于为后续可能需要用到CommonJS模块系统的部分提供了必要的环境支持,从而避免了由于缺少适当上下文而引发的相关报错现象[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值