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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:05:00