Visual Studio Code的Intellisense无法为NPM包工作

6
我正在Windows上使用Visual Studio Code 1.20.0。我的智能感知无法正常工作,例如:Visual Studio Code无法检测到youtubedl包具有getinfo方法。社区是否有任何建议以使智能感知正常工作?如果没有,如何浏览NPM包以找到其公开的各种方法(在.NET中,我们可以使用对象资源管理器执行相同操作)?

enter image description here


我遇到了同样的问题,创建一个jsconfig.json文件并没有帮助解决。根据一些文档,我发现可以看到TypeScript和JavaScript语言特性,这是从GitHub存储库捆绑在Visual Studio Code中的(或者应该是)。 - Carmine Tambascia
4个回答

3
如果您正在使用ES6导入,您将需要在项目根目录中创建一个jsconfig.json文件
下面是一个示例配置,其中allowSyntheticDefaultImports是一个重要选项,它可能解决您的问题
不要忘记之后重新启动VSCode。
{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "allowSyntheticDefaultImports": true,
  },
  "include": [
    "src/**/*"
  ],
}

即使我已经添加了jsconfig.json,我仍然有这个问题。 - Carmine Tambascia
在关闭和打开 TypeScript 几次后,它不知怎么地开始工作了,所以我想这可能是因为缺少 jsconfig.json 文件。 - Carmine Tambascia
很令人失望,这不是默认行为。如果您正在使用TypeScript,则还需要向tsconfig.json文件添加不同的代码片段。 - Ben Butterworth
我在这个问题上花费了无数的时间,这是对我有效的解决方案! - Paolo Tormon

2

我也遇到了同样的问题。我在macOS High Sierra上使用VS Code v1.24.0。

参考页面:https://code.visualstudio.com/docs/languages/javascript#_fixing-npm-not-installed-warning-for-automatic-type-acquisition。 VS Code通过ATA(自动类型获取)功能自动下载和管理JS的类型声明文件(*.d.ts),但对我来说似乎并不起作用。

所以我找到了这个: https://github.com/DefinitelyTyped/DefinitelyTyped。我们可以使用以下命令手动下载类型声明文件:

npm install --save-dev @types/name_for_the_ package

您还可以选择在VS Code中使用扩展程序Types auto installer,以帮助您在运行npm install时下载类型声明文件。有时Types auto installer也可能无法正常工作,但您仍然可以手动下载类型文件。

安装类型文件后,您将再次获得智能感知。

enter image description here

大多数情况下,类型声明包的名称应该与npm上的包名称相同,但前缀为@types/。但如果需要,您可以查看http://microsoft.github.io/TypeSearch/以找到您最喜欢的库的包。

TypeScript-Declaration Files-Consumption

在某些情况下,您可能需要向项目添加jsconfig.json文件。

在目录中存在jsconfig.json文件表示该目录是JavaScript项目的根目录。jsconfig.json指定了根文件和由JavaScript语言服务提供的语言特性的选项。对于常见设置,不需要jsconfig.json文件,但是在某些情况下,您将想要添加jsconfig.json。

并非所有文件都应该在JavaScript项目中(例如,您希望排除某些文件以免显示智能感知)。这种情况在前端和后端代码中很常见。

您的工作区包含多个项目上下文。在这种情况下,您应该在每个项目的根文件夹中添加一个jsconfig.json文件。(jsconfig.json可以没有内容。)

您正在使用TypeScript编译器将JavaScript源代码降级编译。


0

在我的Ubuntu 18.04上,使用以下版本的VSC:

版本:1.40.1 提交:8795a9889db74563ddd43eb0a897a2384129a619 日期:2019-11-13T16:49:30.162Z Electron:6.1.2 Chrome:76.0.3809.146 Node.js:12.4.0 V8:7.6.303.31-electron.0 操作系统:Linux x64 4.15.0-70-generic snap

考虑到与文档所说相反:

Working with JavaScript

TypeScript和JavaScript语言特性未列在扩展中

使JavaScript智能代码完成的两个相互依赖的步骤是:

  • 创建jsconfing.json

  • 禁用“JavaScript和TypeScript Nightly”默认扩展

当然,重新启动VSC。


0
可能不是你的情况,但在我的情况下相当简单。我安装了一个npm包,但由于某种原因,VS Code的语言服务没有识别它,所以无法为该包提供自动补全功能。
重新启动VS Code可以刷新Intellisense自动补全功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接