vue 动态加载图片路径报错解决方法

摘要:
最近,在加载图像路径时遇到错误之前,我总是将图像放在资产文件中。它将直接复制到最终的打包目录。这些文件必须由绝对路径引用,绝对路径由config.js文件中的build.assetsPublic和build.assertsSubDirectory链接确定。

最近遇到图片路径加载报错的问题

之前一直都是把图片放到assets的文件下的。总是报错,看到一些文章并且尝试成功了,特意记录下

首先先说明下vue-cli的assets和static的两个文件的区别,因为这对你理解后面的解决办法会有所帮助

 assets:在项目编译的过程中会被webpack处理解析为模块依赖,只支持相对路径的形式,如< img src=”./logo.png”>和background:url(./logo.png),”./logo.png”是相对资源路径,将有webpack解析为模块依赖 
 static:在这个目录下文件不会被webpack处理,简单就是说存放第三方文件的地方,不会被webpack解析。他会直接被复制到最终的打包目录(默认是dist/static)下。必须使用绝对路径引用这些文件,这是通过config.js文件中的build.assetsPublic和build.assertsSubDirectory链接来确定的。任何放在static/中文件需要以绝对路径的形式引用:/static[filename] 
 根据webpack的特性,总的来说就是static放不会变动的,第三档的文件,asserts放可能会变动的文件

问题来了,用js动态加载assets或者本文件的图片出现404的状态码

vue 动态加载图片路径报错解决方法第1张

跑起来发现图片不显示,错误码为404, 
 原因:在webpack中会将图片图片来当做模块来用,因为是动态加载的,所以url-loader将无法解析图片地址,然后npm run dev 或者npm run build之后导致路径没有被加工【被webpack解析到的路径都会被解析为/static/img/[filename].png,完整地址为localhost:8080/static/img/[filename].png】 
 解决办法:①将图片作为模块加载进去,比如images:[{src:require(‘./1.png’)},{src:require(‘./2.png’)}]这样webpack就能将其解析。②将图片放到static目录下,但必须写成绝对路径如images:[{src:”/static/1.png”},{src:”/static/2.png”}]这样图片也会显示出来,当然你也可以通过在webpack.base.config.js定义来缩短路径的书写长度。

vue 动态加载图片路径报错解决方法第2张

vue 动态加载图片路径报错解决方法第3张

 这是我看见的文章截图,但我发现 只要把图片文件直接放到static文件,写相对路径也是可以的啦

如有疑问 欢迎来讨论呀~~~

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.后续发现把图片文件直接放到static文件,打包上线的时候 会发现找不到图片的路径  在打包的时候还是要改图片路径  ./dist/static/img/xxx.png  

免责声明:文章转载自《vue 动态加载图片路径报错解决方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Windows下安装RabbitMQmac 无法识别seagate硬盘、无法向其写入文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vue 标签中的ref属性和refs

ref: ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件。 我理解的ref也就是相当于是id,一个元素,但是比 js 少了一些获取id的写法,更加的方便,简介。 refs: refs 直接在实例里面获取 ref...

无限加载 vue用infinite-loading插件和阿波罗请求

1.npm install vue-infinite-loading --save 2.npm install --save vue-apollo graphql apollo-client apollo-link apollo-link-http apollo-cache-inmemory graphql-tag   (https://akryum.gi...

webpack.config.js 参数简单了解

webpack.config.js文件通常放在项目的根目录中,它本身也是一个标准的Commonjs规范的模块。 var webpack = require('webpack'); module.exports = { entry: [ 'webpack/hot/only-dev-server', './js/...

VUE集成keycloak和Layui集成keycloak

一:KEYCLOAK配置部分:   1,下载keycloak,官网地址:https://www.keycloak.org/downloads.html。下载第一个就行        2,下载完毕之后,打开文件,访问 bin 路径,点击 standalone.bat 打开,打开之后大概如下:             3,然后访问:http://localho...

Vue template 报错 Type expected.Vetur(1110)

解决方案: 1. 文件名称中不要含Test 2.可以复制正常文件,再改名字 排查步骤如下: 1. 按其他博客写的去设置了vetur.validation.template false,切换到问题vue文件,还是报错; 2. 尝试将没报错的文件内容复制过来,依然报错; 3.内容后,输入<template,选择default.vue 模板,依然报错;...

vue自定义日期选择,类似美团日期选择,日历控件,vue日历区间选择

一个日历的控件,基于vue的,可以日历区间选择,可用于酒店日历区间筛选,动手能力强,可以修改成小程序版本的,先上效果图 里面的颜色样式都是可以修改的 选择范围效果 话不多说,直接上干货,代码可以直接复制访问 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4...