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

ts-node运行引入inquirer的TS项目报resolveTypeReferenceDirective错误

报错根因

这个报错和inquirer包本身没有直接关系,核心原因是TypeScript 4.7版本对内部resolveTypeReferenceDirectiveAPI做了不兼容的签名调整,你项目中依赖的部分TypeScript生态工具仍在使用旧版API逻辑,传入了非字符串格式的参数,触发了TS内部的断言报错。
从你给出的依赖配置判断,最高发的触发点是ts-node-dev@2.0.0内置的类型解析逻辑没有适配TS 4.7的新签名——哪怕你本地安装了已经适配新版TS的ts-node@10.8.1,依赖树中残留的旧解析逻辑依然会抛出错误。除此之外,tsconfig模块解析配置错误、运行时调用了全局安装的旧版ts-node,也会触发同类问题。

修复步骤

按顺序尝试以下方案即可解决问题:

  • 首先强制调用项目本地依赖运行,排除全局ts-node版本干扰:
    npx ts-node index.ts
    
    如果这步能正常运行,说明你全局安装的ts-node版本过旧,升级全局ts-node到最新版本即可。
  • 如果本地调用仍然报错,先升级存在兼容问题的依赖:
    npm i ts-node@latest ts-node-dev@latest typescript@latest -D
    
    升级完成后删除node_modules目录和对应的锁文件(package-lock.json/yarn.lock/pnpm-lock.yaml),重新执行npm install安装依赖后,再运行代码验证。
  • 升级依赖后仍报错的话,检查项目根目录的tsconfig.json,确保compilerOptions中包含以下配置:
    {
      "compilerOptions": {
        "target": "ES2020",
        "module": "CommonJS",
        "esModuleInterop": true,
        "moduleResolution": "node",
        "skipLibCheck": true
      }
    }
    
    其中skipLibCheck: true会跳过第三方包声明文件的全量校验,绕开类型引用解析阶段的兼容问题,不会影响业务代码本身的类型检查结果。
  • 如果你暂时不想调整现有依赖版本,直接将TypeScript降到4.6.x版本即可,这个版本还未修改resolveTypeReferenceDirective的API签名,不会触发该报错:
    npm i typescript@4.6.4 -D
    
    重装依赖后即可正常运行代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 19:27:27