关于vue项目中,使用require动态加载本地图片

  1. vue中使用require(path)报错
let path = "@/assets/imgs/cloud/Directory.svg"
require("@/assets/imgs/cloud/Directory.svg") // 直接应用不会报错
require(path) // 使用变量报错,路径未找到
  1. 原因:
  • webpack本身是一个预编译的打包工具,无法预测未知变量路径 不能require纯变量路径
  • require(path) ,path 至少要有三部分组成, 目录+文件名+后缀
  • 目录 => webpack 才知道从哪里开始查找
  • 后缀 => 文件后缀,必须要加上,不然会报错
  • 文件名 => 可用变量表示
  1. 解决方法:
  • 网上说是在webpack 中加入下面代码,重新启动就会好使,这个方案暂时没有试过,参考地址,下面为webpack.config.js的配置
// webpack.config.js
{
  module: {
    // require
    unknownContextRegExp: /$^/,
    unknownContextCritical: false,

    // require(expr)
    exprContextRegExp: /$^/,
    exprContextCritical: false,

    // require("prefix" + expr + "surfix")
    wrappedContextRegExp: /$^/,
    wrappedContextCritical: false
  }
}
  • 使用变量拼接
value.svg = require('@/assets/' + item.svg )  // 不能完全使用变量,前置地址必须是静态地址,否则会报错
  • 使用require.context(require.context还可以实现项目工程化,在项目中自动引入文件以及配置svg应用广泛参考地址
require.context(directory, useSubdirectories = false, regExp = /^\.\//)
  // require.context 有三个参数
    // directory:说明需要检索的目录
    // useSubdirectories:是否检索子目录
    // regExp: 匹配文件的正则表达式
const context = require.context('./assets', true, /\.png$/); // 根据路径正则读取文件
const imgName = './1.png';
const Img = context(imgName); 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 目录第1章 webpack简介 11.1 webpack是什么? 11.2 官网地址 21.3 为什么使用 web...
    lemonzoey阅读 5,692评论 0 1
  • 原文http://www.cnblogs.com/libin-1/p/6596810.html 版本号 vue-c...
    tengrl阅读 9,142评论 0 0
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,961评论 0 5
  • 最近感觉自己越来越像一个API调用程序员,很多基础的原理以及项目构建都没实际操作过,所以这里动手自己去搭建了一个v...
    Aoyi_G阅读 5,388评论 0 2
  • 断垣枯藤落叶蒙 笙歌散尽游人去 始觉夏逝秋已至 图片网络
    浅陌染秋阅读 7,158评论 43 25

友情链接更多精彩内容