默认情况下,在 VS Code 中编辑 JavaScript 文件时,它会假设当前上下文中存在
fetch
函数和相关类型。这对于设计在浏览器中运行的 JavaScript 来说是有意义的,但在 Node.js 上运行时,除非通过 fetch
安装,否则 node-fetch
函数不存在。我发现在这种情况下,VS Code 具有误导性,因为当您尝试调用 fetch
函数或访问其他类型(例如 Request
和 Response
)时,它不会突出显示错误,即使它们不存在,除非您已安装 node-fetch
。
如何配置 VS Code 来假设 node.js 上下文,从而假设
fetch
不存在,除非我显式从 node-fetch
导入它?
tsconfig.json compilerOptions.lib
的文档:
TypeScript 包含内置 JS API 的一组默认类型定义(如
),以及浏览器环境中找到的内容的类型定义(如Math
)。document
创建tsconfig.json或jsconfig.json,并将
compilerOptions.lib
数组设置为not包含“DOM”,这意味着lib.dom.d.ts(“DOM标准”)不会假定 TypeScript 附带的“库”类型定义文件。您应该指定要在哪个 ECMA 脚本标准中编写源代码。
files
、include
和exclude
。如果您未指定其中任何一个,include
将默认为**
,它会匹配配置文件旁边的子目录旁边和递归下的所有内容。
如果您只想编写一个 JS 文件(即现在您只有一个源文件有一个完整的配置文件!),则必须创建此文件可能会被视为很烦人。我不知道是否有更适合这种用例的替代方案。如果有人知道,请编辑此答案。
lib
)。js/ts.implicitProjectConfig.*
),但它们都不是用于设置 compileOptions.lib
字段,我的直觉说这可能不会发生(但不要引用我的话)。TypeScript 为 Web API 捆绑类型,但不为 NodeJS API 捆绑类型。使用 NPM 安装
@types/node
的版本。确保您安装的版本的主版本号与您想要运行脚本的 NodeJS 版本的主版本号相匹配。
继续讨论 VS Code 对隐式项目的用户设置,如果未检测到项目,VS Code 会启用一些默认值(除了 TypeScript 本身所做的设置之外)。您可以通过“在文件中查找”来浏览 github.dev/microsoft/vscode 上的代码,使用
extensions/typescript-language-features/**/*
作为“要包含的文件”字段,使用 compilerOptions
作为查找查询。 compilerOptions.lib
似乎不是 是 VS Code 在这种情况下涉及的东西。