TypeScript错误TS2304:找不到名称'require' — 2025年如何修复

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:“你的老朋友require突然隐身了”

\n\n

你在编写TypeScript,一切进展顺利,然后——砰!编译器抛出一条冰冷的消息:“TS2304:找不到名称'require'”。熟悉吗?如果你从JavaScript转向TypeScript,或者正在处理Node.js项目,你很可能遇到过这个“幽灵”。到2025年,这个错误在Stack Overflow上仍然高居榜首(超过20万次浏览),但好消息是:它很容易被攻克。

\n\n

在本文中,我们将分析为什么TypeScript看不到require,需要调整哪些配置,以及——最重要的是——如何编写现代代码,从而一劳永逸地忘记这个问题。我们开始吧!

\n\n

什么是TS2304以及它为什么会出现?

\n\n

TS2304:找不到名称'require'错误在TypeScript找不到全局函数require的定义时出现。在JavaScript中(尤其是在Node.js环境中),require是用于以CommonJS风格导入模块的原生函数。但TypeScript默认不知道Node.js环境。它认为你在浏览器中工作,而浏览器中不存在require。

\n\n

典型场景:

\n\n
// app.ts\nconst express = require('express');\n// ❌ TS2304:找不到名称'require'\n
\n\n

到2025年,TypeScript(已经是5.x版本)默认使用ES模块(import/export)。如果你试图在没有正确配置的情况下使用require,编译器会合理地提出抗议。

\n\n

错误的主要原因:

\n
    \n
  • 未安装@types/node包 — TypeScript不知道Node.js的全局API。
  • \n
  • tsconfig.json配置错误 — 缺少types: ["node"]或module与CommonJS不匹配。
  • \n
  • 使用过时的语法 — 在2025年,最好使用import代替require。
  • \n
  • CommonJS与ESModules之间的冲突 — 项目配置为ES模块,但你却用CommonJS风格编写代码。
  • \n
\n\n

方法#1:安装@types/node(快速解决方案)

\n\n

最简单且最常见的方法——让TypeScript“看到”Node.js。为此,请安装类型包:

\n\n
npm install --save-dev @types/node\n
\n\n

之后,在tsconfig.json中添加:

\n\n
{\n  "compilerOptions": {\n    "types": ["node"]\n  }\n}\n
\n\n

现在TypeScript知道了require函数、__dirname、process以及其他Node.js全局对象。错误将消失。

\n\n

优点:快速,开箱即用。
\n缺点:你继续使用过时的CommonJS语法。

\n\n

方法#2:配置moduleResolution和esModuleInterop

\n\n

如果你希望在配置为现代模块的项目中使用require,请在tsconfig.json中添加以下选项:

\n\n
{\n  "compilerOptions": {\n    "module": "commonjs",\n    "moduleResolution": "node",\n    "esModuleInterop": true,\n    "allowSyntheticDefaultImports": true\n  }\n}\n
\n\n
    \n
  • "module": "commonjs" — 明确指定输出代码将为CommonJS格式。
  • \n
  • "moduleResolution": "node" — 像Node.js一样查找模块(首先查找node_modules)。
  • \n
  • "esModuleInterop": true — 允许通过import导入CommonJS模块(反之亦然)。
  • \n
  • "allowSyntheticDefaultImports": true — 允许从没有默认导出的模块进行默认导入。
  • \n
\n\n

可工作代码示例:

\n\n
import express = require('express');\n// 或者甚至\nconst express                

博客

书籍推荐