vue引入图片报错?VueCli 关于静态资源(图片) 引入问题

本文详细介绍了在Vue-Cli项目中如何处理图片和背景图片的引入问题,包括相对路径和绝对路径的使用。对于动态属性,相对路径需借助require转换为模块,而绝对路径直接引用公共目录下的资源。同时,通过修改vue.config.js的publicPath可解决打包后静态资源路径问题。此外,展示了动态设置背景图片的方法,既可在内联样式中使用require,也可在CSS中直接引用public目录下的资源。

一、关于Vue-Cli图片引入问题?

首先我们要清楚Vue-cli是基于Webpack来进行的打包,其次我们再来看一下Vue-cli的官网是如何给出我们的打包引入图片方式的。
在这里插入图片描述

二、两种引入方式

简单的来说

一种是相对引入方式,一种是绝对引入方式

在这里插入图片描述

  • 相对引入:
 <img src="../assets/logo.png" alt="" /> 
  • 绝对引入:
  <img src="/images/logo.png" alt="" /> <!-- /单杠引入会去找public文件夹 -->

关于相对文件的话我们放到assets中,关于绝对文件的话我们去放到public文件中

此时我们都是采用的正常字符串引入格式,那么一旦我们如果想要写成动态属性呢?

我们可以尝试一下,先来看相对路径

  <img src=
<think>嗯,用户的问题是,在若依框架中使用Vue2时,图片放在组件文件夹里显示正常,但代码引入报错。我需要先理解具体情况。首先,图片在组件文件夹里显示正常,说明路径可能没问题,但代码引入时出错,可能涉及路径别名、构建配置或引用方式的问题。 参考用户提供的引用,比如引用[3]提到的文件名大小写问题,但用户的问题是关于图片的,可能不直接相关。但可以考虑路径大小写的问题。不过更可能的是路径别名配置的问题,因为若依框架可能配置了特定的别名,比如@指向src目录。用户可能在代码中使用相对路径,而构建时路径解析不一致。 另外,引用[1]中提到组件循环引用的问题,但用户的问题是关于图片的,所以可能不适用。不过可以想到,图片的引用方式是否正确,比如在Vue中使用require或正确的静态资源处理方式。 可能的解决方案包括检查路径是否正确,使用正确的别名,或者在webpack配置中添加对图片文件的支持。例如,若依框架可能使用vue-cli,需要确保图片放在assets目录下,或者正确配置loader处理图片。 还需要考虑开发环境和生产环境的路径差异,可能需要使用~@或正确的别名前缀。另外,检查报错信息的具体内容,比如是否提示找不到模块,可能需要使用require或import语句正确引入图片。 总结一下,可能的解决步骤是:1.检查路径是否正确使用别名;2.确认图片存放位置是否符合规范;3.调整引用方式,使用require或正确的静态资源处理;4.检查webpack配置,确保处理了图片文件;5.清理缓存重新构建。</think>### 若依Vue2图片引入报错解决方案 #### 问题定位 在若依Vue2框架中,图片放在组件文件夹下显示正常但代码引入报错,通常由以下原因导致: 1. **路径别名未正确配置**:若依默认使用`@`指向`src`目录,但组件内路径可能需特殊处理 2. **构建工具解析差异**:开发环境与构建环境对相对路径解析方式不同 3. **静态资源处理规则限制**:Vue Loader对非`assets`目录资源处理存在限制 #### 分步解决方案 1. **规范存放位置** - 将图片移动到标准目录:`src/assets/images/` - 组件目录建议只存放`.vue`文件与配套的`.js`/`.scss`文件 2. **使用路径别名(推荐)** ```vue <!-- 组件中使用 --> <img :src="require('@/assets/images/photo.jpg')"> ``` ```javascript // JS代码中引用 export default { data() { return { imgUrl: require('@/assets/images/photo.jpg') } } } ``` 3. **配置vue.config.js** ```javascript // 添加webpack配置 module.exports = { chainWebpack: config => { config.module .rule('images') .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/) .use('url-loader') .loader('url-loader') .tap(options => ({ ...options, esModule: false // 解决require报错问题 })) } } ``` 4. **检查构建配置** - 确认`vue.config.js`中是否配置了`publicPath` - 检查`router/index.js`中是否设置了`base`参数影响路径解析 5. **处理大小写敏感问题(参考引用[3])** - 确认文件名实际大小写与代码引用完全一致 - 建议统一采用全小写命名(如`user-avatar.jpg`) 6. **清理缓存重建** ```bash rm -rf node_modules/.cache npm run dev ``` #### 注意事项 1. 生产环境部署时需确保服务器配置正确的静态资源路径 2. 若使用CDN需同步调整`publicPath`配置 3. 大文件建议通过`public`目录引用(需注意缓存策略) #### 典型报错处理 - **`Module not found`错误**:检查路径别名是否正确使用`@` - **`404 Not Found`错误**:确认构建后的`dist`目录中图片是否被正确复制 - **`Undefined variable`错误**:确保在JS中使用`require()`包裹路径
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归来巨星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值