Vite 不支持 require 方法,因为 Vite 默认使用 ESM(ES 模块)作为模块系统,而不支持 CommonJS(包括 require 方法)。Vite 是一个现代的构建工具,旨在提供更快的冷启动、即时模块热更新(HMR)等优势,因此它不包含对 CommonJS 模块系统的支持12。
# 1. 使用 import 方法:
同步加载模块:可以使用
import
语句来替代require
。例如,将const ElementResizeDetector = require('element-resize-detector')
替换为import elementResizeDetector from 'element-resize-detector'
。异步加载模块:如果需要异步加载模块,可以使用
import
语句来替代require
方法。例如:async function initNav() {
const ElementResizeDetector = await import('element-resize-detector');
const erd = elementResizeDetector.default();
}
或者:
function initNav() {
import('element-resize-detector').then(module => {
const erd = module.default();
}).catch(err => {
console.error('加载失败');
});
}
# 2. 动态加载资源:
在 Vite 中,动态导入(如
import()
只能用于模块,不能用于资源(如图片)。因此,不能使用require
来动态加载资源。作为替代方案,可以使用计算属性或方法来动态生成资源路径,然后在模板中使用这些路径。例如:computed: {
imagePath() {
return require('@/assets/image.png');
}
}
然后在模板中使用这个计算属性:
<img :src="imagePath">