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

JS转TS时tsc编译报错:Vitest无法解析Node库定义

解决TypeScript迁移中Vitest依赖Node库类型无法解析的问题

核心原因

错误提示的Cannot find module 'node:http' or its corresponding type declarations,本质是TypeScript缺少Node.js内置模块的类型定义,同时当前tsconfig配置对ES模块语法的支持不足,导致无法识别node:前缀的导入。

具体解决步骤

1. 安装Node.js类型定义包

执行以下命令安装@types/node,它提供了所有Node.js内置模块的类型声明:

pnpm add -D @types/node

2. 调整tsconfig.json配置

修改compilerOptions部分,补充类型支持并优化ES版本设置:

{
    "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.mjs", "src/**/*.mts"], // 缩小范围至源码目录,避免解析配置文件
    "exclude": [
        "node_modules",
        "coverage/**/*",
        "dist/**/*",
        "test/**/*",
        "vitest.config.mjs",
        "vitest.workspace.mjs" // 排除Vitest配置文件,避免TypeScript处理其依赖的类型
    ],
    "compilerOptions": {
        "outDir": "dist",
        "baseUrl": "./",
        "paths": {
            "$types/*": [
                "types/*"
            ]
        },
        "target": "ES2022", // 支持node:前缀导入的最低ES版本
        "module": "NodeNext",
        "moduleResolution": "NodeNext",
        "checkJs": true,
        "types": ["node"], // 明确引入Node.js类型定义
        "skipLibCheck": true // 可选:跳过第三方库的类型检查,避免依赖库自身类型问题干扰编译
    }
}

3. 验证编译

重新执行tsc --build,此时应该能正常解析Node.js内置模块的类型,消除相关错误。

补充说明

  • 如果项目没有src目录,可根据实际源码结构调整include规则,避免包含配置文件或测试文件,减少TypeScript需要处理的范围。
  • 由于是pnpm monorepo结构,确保@types/node安装在当前package目录下(而非根目录),或者在根目录安装后通过pnpm的workspace配置共享依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:46:17