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">