如何配置tsconfig.json使Node.js服务端代码禁用window/document?
解决Node.js环境下TypeScript仍提示window/document的问题
可以通过tsconfig.json的配置完全屏蔽浏览器全局对象的提示,让代码中使用window或document时直接抛出类型错误,具体操作如下:
指定仅加载Node.js相关标准库
TypeScript默认会包含浏览器环境的dom库,这是window/document提示的根源。在compilerOptions中通过lib字段明确只引入Node.js对应的库:{ "compilerOptions": { "lib": ["ESNext", "Node"], // 替换为你项目实际需要的ES版本+Node库 // 其他已有配置... } }该配置会移除
dom库带来的浏览器全局类型,一旦代码中使用window或document,编译器会直接抛出“找不到名称”的错误。限制仅加载Node.js类型定义
如果第三方依赖意外引入了浏览器类型,可通过types字段强制TypeScript只加载Node.js的类型包:{ "compilerOptions": { "types": ["node"], // 仅加载@types/node提供的类型定义 // 其他已有配置... } }此设置会关闭TypeScript自动引入默认类型的行为,仅加载你指定的
node类型。对齐Node.js环境的基础配置
配合以下配置让编译器完全适配Node.js环境,避免环境混淆:{ "compilerOptions": { "target": "ES2022", // 匹配你的Node.js支持的ES版本 "module": "CommonJS", "moduleResolution": "node", // 其他配置... } }
如果需要针对单个文件临时屏蔽浏览器类型,可在文件顶部添加以下指令:
/// <reference no-default-lib="true"/> /// <reference lib="esnext" /> /// <reference lib="node" />
内容的提问来源于stack exchange,提问作者Aabhas Dhaubanja
相关产品推荐
相关产品推荐

