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

Yarn2(PnP)环境下TypeScript无法找到@types/node类型定义问题求助

问题核心原因

Yarn 2+ 启用PnP模式后抛弃了传统node_modules目录,你当前配置中的TypeScript和Webpack仍使用基于node_modules的默认解析逻辑,无法识别PnP管理的依赖路径,因此无法找到@types/node类型定义以及Node.js内置模块。ts-node可以正常运行是因为它默认集成了Yarn PnP的适配逻辑,无需额外配置就能正确解析依赖。

解决方案

1. 安装必要依赖

执行以下命令安装PnP适配工具:

yarn add -D @yarnpkg/pnpify @yarnpkg/webpack-plugin

2. 调整tsconfig.json配置

修改模块解析策略,兼容PnP路径规则:

{
  "compilerOptions": {
    // 保留原有其他配置不变
    "moduleResolution": "node16",
    "typeRoots": [".yarn/cache/@types", "./node_modules/@types"]
  }
}

如果你的项目是纯服务端项目不需要浏览器API,可以删除lib配置中的"DOM"项,避免类型冲突。

3. 调整webpack.config.js配置

指定构建目标为Node环境,避免内置模块解析报错,同时添加PnP解析插件:

const PnpWebpackPlugin = require(`@yarnpkg/webpack-plugin`);

module.exports = {
  // 保留原有其他配置不变
  target: "node",
  resolve: {
    extensions: [".tsx", ".ts", ".js"],
    plugins: [new PnpWebpackPlugin()]
  },
  resolveLoader: {
    plugins: [new PnpWebpackPlugin()]
  }
};

4. 调整运行命令

修改package.json中的脚本,用pnpify包裹TS和Webpack相关命令,让它们使用PnP路径解析逻辑:

{
  "scripts": {
    "build": "pnpify webpack",
    "tsc": "pnpify tsc"
  }
}

额外验证点

确认你安装的@types/node主版本号和本地运行的Node.js大版本号一致,版本不匹配也可能触发类型识别错误。

调整完成后重新执行yarn tsc和yarn build即可解决报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:54:03