【问题标题】:How to enable Node.js code autocompletion in VSCode?如何在 VSCode 中启用 Node.js 代码自动补全?
【发布时间】:2020-07-01 18:53:47
【问题描述】:

我已经安装了 Visual Studio Code 和 Node.js,它们基本上都可以工作,但自动完成功能没有(完全)工作。如果我输入“控制台”。我确实看到了一个列表弹出窗口。同样,如果我这样做: 常量 http = 要求(“http”); http.

但如果我只是输入“进程”。我什么都没看到。事实上,只要我输入“。”代码自动完成“处理”到“处理指令”。如果您在节点提示符下键入“进程”,我希望看到 argv 以及您看到的所有其他内容。

这是我输入“控制台”时看到的内容: 是的——它有效!

但这是我在输入“进程”时看到的内容。 (我必须将自动完成的“ProcessingInstruction”改回“process”): 嘘——它不知道“过程”! :(

【问题讨论】:

  • 您的工作区根目录下是否有package.json 文件?
  • 没有。我需要一个吗?再说一次,很多 JS 的东西都可以自动完成。
  • process 是特定于 NodeJS 的,因此 VS Code 需要知道您正在使用 Nodejs。运行npm init 可能会成功。这还将创建@MattBierner 提到的package.json 文件
  • 感谢@abondoa 的提示。我确实没有运行 npm init。但是我试过了,我现在有一个 package.json,但我仍然没有得到“进程”的自动完成,即使在重新启动代码之后也是如此。 “流程”的自动完成功能对您有用吗? Code 如何知道“这是 Node”?
  • @curtc 您还需要运行npm install --save-dev @types/node。请参阅下面我新添加的答案。

标签: node.js visual-studio-code autocomplete


【解决方案1】:

您需要将 Node JS 中的类型告诉 VS Code(正如您在评论中提到的那样)。为此,您可以安装运行以下命令的节点类型(假设您已经运行 npm init):

npm install --save-dev @types/node

它将安装 Node JS 的类型,VS Code 会自动选择这些类型,并且您将自动完成所有 Node JS 特定的事情。您甚至不必重新启动 VS Code。

当您向项目添加更多依赖项时(如果您将这样做的话)。他们中的许多人也有一个 @types/X 包(如果他们没有已经包含在包中),这也将允许自动完成。

【讨论】:

  • vscode网站没有提到这个?你确定这不是在解决一些固有的问题而只是在解决问题吗?
  • @MuhammadUmer 老实说,我也找不到关于它的文档。我的理解是 VS 代码在 tsconfig.json 中查找 typeRoots 以获取全局类型 (github.com/Microsoft/TypeScript/issues/13196)。默认情况下,typeRootsnode_modules/@types (typescriptlang.org/tsconfig#typeRoots) 上运行,这意味着如果您在该文件夹中安装任何 typescript 类型,它们应该在 VS 代码中可见 - 至少这是我看到的行为。跨度>
  • 你拯救了我的一天!
  • 我有一个没有配置的文件夹,只有原始的*.js 文件。自动完成工作正常。我有另一个具有相同文件但没有自动完成功能的系统。在损坏的系统上,没有安装 NPM 并且网络受到限制。也许 VSCode 正在做一些幕后配置?
  • @NathanGoings 如果您在 VS Code 中根本没有获得任何 JS 自动完成功能,这可能是完全不同的事情。您可以尝试使用最小的可重复示例发布一个单独的问题。
【解决方案2】:

根据 Microsoft 的文档:https://code.visualstudio.com/docs/nodejs/working-with-javascript

适用于 JavaScript 库和框架的 IntelliSense 由 TypeScript 类型声明(类型)文件提供支持。

自动类型获取需要 npmjs,这是 Node.js 包管理器,它包含在 Node.js 运行时中。

在我的情况下,我没有安装 npmjs,这就是自动类型获取失败的原因。

*编辑,即安装npm后,我的自动完成功能开始为节点相关提示成功工作。

【讨论】:

    【解决方案3】:

    如果您在节点应用程序中使用纯 javascript,则在包含所需模块时,应使用单引号而不是双引号来定义它们。例如,如果您使用像“Prettier”这样的代码格式化程序扩展程序,它默认将它添加到 IntelliSense 之前,那么您必须更新您的设置以使用单引号。

    【讨论】:

      猜你喜欢
      • 2022-07-05
      • 1970-01-01
      • 2022-08-08
      • 2015-11-05
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 2013-06-30
      相关资源
      最近更新 更多