使用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
相关产品推荐
相关产品推荐

