You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Vitest时CommonJS模块require导入错误的问题求助

解决Vitest编译测试文件生成CommonJS代码导致的导入错误
  • 检查项目模块类型配置
    项目根目录的package.json如果没设置"type": "module",Node.js默认会把所有文件当作CommonJS模块处理。Vitest编译.ts测试文件时会遵循这个规则,生成用require的CommonJS代码,但Vitest本身不支持用require导入。你需要在package.json中添加:

    "type": "module"
    

    同时确保Vitest配置文件(如vitest.config.ts)用ESM语法导出配置,比如export default defineConfig(...),而非module.exports。

  • 调整Vitest的编译格式配置
    打开vitest.config.ts,检查是否有强制生成CommonJS代码的配置。比如如果设置了esbuild.format: 'cjs',就会导致编译后的文件用require。改成ESM格式即可:

    import { defineConfig } from 'vitest/config'
    
    export default defineConfig({
      // 其他测试配置
      esbuild: {
        format: 'esm'
      }
    })
    
  • 确保测试文件用ESM导入语法
    你的.test.ts文件里必须用ES模块的导入方式,比如:

    import { describe, it, expect } from 'vitest'
    

    如果测试文件里用了require,Vitest的编译逻辑会倾向于生成CommonJS风格的输出文件。

  • 清理Vitest缓存后重试
    修改配置后,Vitest可能还在使用旧的缓存编译结果,需要先清理缓存再运行测试:

    npx vitest --clearCache
    

内容的提问来源于stack exchange,提问作者HelloWorld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:00:57