- vue中使用require(path)报错
let path = "@/assets/imgs/cloud/Directory.svg"
require("@/assets/imgs/cloud/Directory.svg") // 直接应用不会报错
require(path) // 使用变量报错,路径未找到
- 原因:
- webpack本身是一个预编译的打包工具,无法预测未知变量路径 不能require纯变量路径
- require(path) ,path 至少要有三部分组成, 目录+文件名+后缀
- 目录 => webpack 才知道从哪里开始查找
- 后缀 => 文件后缀,必须要加上,不然会报错
- 文件名 => 可用变量表示
- 解决方法:
- 网上说是在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辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。