Visual Studio Code IntelliSense对Node.js不起作用

5

在发表这个问题之前,我查看了以下主题:

Visual Studio Code:Intellisense不工作

Visual Studio Code:JavaScript的Intellisense不工作

我的Windows 10笔记本电脑上安装了Visual Studio版本1.26.1。

我正在学习Node.Js,所以我想学习'FS'模块中的各种功能。我在Visual Studio Code中创建了一个名为'app1.js'的新文件,并编写了以下代码行。

fsObj = require('fs');

此后,当我键入fsObj.时,以查看'fs'对象下可用的函数/属性时,我只得到一个列表,其中只有两个对象,它们不是'fs'模块的元素。 我不明白为什么IntelliSense没有显示'fs'模块的元素。我将VS Code屏幕截图粘贴如下。

enter image description here


1
如果你已经安装了 node,那么这些 typings 应该会自动下载。你的设置里 "typescript.disableAutomaticTypeAcquisition": false 没有改变过吗?还有 "editor.suggestOnTriggerCharacters": true,这两个都是默认设置,最好不要更改。 - Mark
这些设置在哪里?如果这些设置在VS Code中,我该如何访问它? - KurioZ7
在左下角的齿轮图标中,点击“设置”。然后你可以搜索设置:如果这两个设置没有被更改,你应该能在左侧面板(只读)中找到它们,而不是右侧面板。我还假设你有互联网访问权限,这样vscode就可以下载智能感知所需的文件。你也安装了node吗?抱歉,这些都是基本问题,以防万一。 - Mark
我已经检查了这些设置,它们没有改变。奇怪的是,如果我创建一个新的文件夹并在VS Code的新窗口中打开该新文件夹,那么我就不会遇到这个问题。但是,如果我在一个新的VS Code实例中打开同样的文件夹(在这个文件夹中我看到了这个问题),那么我仍然会遇到这个问题。这可能与文件夹内部的某些东西有关吗? - KurioZ7
在变量前面添加const起作用了!但我想知道为什么会这样。你可以把你的评论作为答案,我会接受的。谢谢帮助。 - KurioZ7
显示剩余3条评论
1个回答

3
在你的变量fsObj之前没有使用constletvar,那个变量具有“全局”作用域。这似乎会防止vscode能够为该变量分配适当的智能感知参数。添加其中之一,例如const,提供了一个不同的作用域,在这个作用域中智能感知可以工作。我无法确切地解释是什么阻止了智能感知,也许变量绑定到作用域链中更高的某个东西会阻止它的工作。
无论如何,如果使用严格模式,则不包括const/let/var将导致错误。

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