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

使用Bun运行脚本遇TS5109错误:moduleResolution配置异常

问题:运行find-cypress-specs脚本触发TypeScript编译错误

场景

执行package.json中的以下脚本时:

"changed-specs": "find-cypress-specs --branch main --parent"

出现TypeScript编译错误,报错信息如下:

/Users/george/Documents/core-cypress/node_modules/ts-node/src/index.ts:859
    return new TSError(diagnosticText, diagnosticCodes, diagnostics);
           ^
TSError: ⨯ Unable to compile TypeScript:
error TS5109: Option 'moduleResolution' must be set to 'NodeNext' (or left unspecified) when option 'module' is set to 'NodeNext'.

    at createTSError (/Users/george/Documents/core-cypress/node_modules/ts-node/src/index.ts:859:12)
    at reportTSError (/Users/george/Documents/core-cypress/node_modules/ts-node/src/index.ts:863:19)
    at /Users/george/Documents/core-cypress/node_modules/ts-node/src/index.ts:1379:34
    at Object.compile (/Users/georg/Documents/core-cypress/node_modules/ts-node/src/index.ts:1451:13)
    at Module.m._compile (/Users/george/Documents/core-cypress/node_modules/ts-node/src/index.ts:1617:30)
    at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
    at Object.require.extensions.<computed> [as .ts] (/Users/george/Documents/core-cypress/node_modules/ts-node/src/index.ts:1621:12)
    at Module.load (node:internal/modules/cjs/loader:1091:32)
    at Function.Module._load (node:internal/modules/cjs/loader:938:12)
    at Module.require (node:internal/modules/cjs/loader:1115:19) {
  diagnosticCodes: [ 5109 ]
}

环境与尝试

  • 目前使用Bun作为包管理器,其他脚本运行正常
  • 近期未修改TypeScript配置,仅更换了包管理器
  • 怀疑部分库与Bun不兼容,尝试将moduleResolution设为NodeNext但问题依旧

当前TypeScript配置(tsconfig.json):

{
    "compilerOptions": {
      "target": "es5",
      "lib": ["es5", "dom"],
      "types": ["cypress", "node", "@cypress/grep"],
      "resolveJsonModule": true
    },
    "include": ["**/*.ts"]
  }

解决方案

1. 统一module与moduleResolution配置

错误提示说明module被设为NodeNext但moduleResolution不匹配,大概率是Bun或find-cypress-specs内部触发了不同的TS规则。直接在tsconfig中明确统一配置:
如果要兼容CommonJS:

{
  "compilerOptions": {
    "target": "es5",
    "lib": ["es5", "dom"],
    "types": ["cypress", "node", "@cypress/grep"],
    "resolveJsonModule": true,
    "module": "CommonJS",
    "moduleResolution": "Node"
  },
  "include": ["**/*.ts"]
}

如果要使用ES模块规范:

{
  "compilerOptions": {
    "target": "es5",
    "lib": ["es5", "dom"],
    "types": ["cypress", "node", "@cypress/grep"],
    "resolveJsonModule": true,
    "module": "NodeNext",
    "moduleResolution": "NodeNext"
  },
  "include": ["**/*.ts"]
}

2. 为ts-node单独指定配置

如果全局tsconfig需要保留现有设置,可以给这个脚本单独指定配置:

  • 创建tsconfig.scripts.json:
{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "module": "NodeNext",
    "moduleResolution": "NodeNext"
  }
}
  • 修改脚本:
"changed-specs": "ts-node --project tsconfig.scripts.json find-cypress-specs --branch main --parent"

3. 绕过ts-node直接运行JS入口

如果find-cypress-specs有编译好的JS版本,直接调用其dist文件:

"changed-specs": "node ./node_modules/find-cypress-specs/dist/index.js --branch main --parent"

4. 验证Bun兼容性

  • 重新安装依赖:
bun install
  • 临时切换回npm/yarn验证是否是Bun的兼容问题:
npm install
npm run changed-specs

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 18:19:52