如何在VSCode中消除ES模块与CommonJS相关错误?
解决Bun环境下VSCode中ES模块与CommonJS类型错误
Bun的模块机制不区分ES Modules(ESM)和CommonJS(CJS),但VSCode默认用Node.js的模块规则做类型检查,所以会出现代码能正常运行但编辑器报错的情况。不用靠@ts-ignore硬扛,调整TS配置和VSCode设置就能解决:
1. 让TypeScript对齐Bun的类型规则
在项目根目录的tsconfig.json里,添加或调整以下配置:
{ "compilerOptions": { // 引入Bun专属类型定义,覆盖Node.js的模块检查逻辑 "types": ["bun-types"], // 使用bundler模式解析模块,对齐Bun的实际运行规则 "moduleResolution": "bundler", // 启用ESNext语法,适配Bun的特性支持 "module": "ESNext", "target": "ESNext", // 兼容CJS与ESM的导入差异 "allowSyntheticDefaultImports": true, "esModuleInterop": true } }
先安装依赖:
bun add -D bun-types typescript
2. 让VSCode使用项目本地的TypeScript版本
VSCode默认用内置TS版本,可能和Bun的类型定义不兼容:
- 打开命令面板(Ctrl+Shift+P / Cmd+Shift+P)
- 输入
TypeScript: Select TypeScript Version - 选择
Use Workspace Version,确保用项目里安装的TS
3. 不要设置package.json的"type": "module"
Bun会自动识别模块类型,不需要这个配置。强行设置后,TS会切换到Node.js的ESM检查规则,反而触发更多和Bun运行时不符的错误,直接删掉这个字段即可。
补充:个别顽固错误的处理
如果还有少量第三方库的导入错误,可以在tsconfig.json里添加"skipLibCheck": true,跳过第三方库的类型检查(仅在确认该库和Bun兼容时使用)。
内容的提问来源于stack exchange,提问作者Jackson Roberts
相关产品推荐
相关产品推荐

