【问题标题】:Visual Studio Code Intellisense not working for JavascriptVisual Studio Code Intellisense 不适用于 Javascript
【发布时间】:2016-07-14 02:42:22
【问题描述】:

我在 Windows 和 Mac 上使用 Visual Studio Code (VSC) 0.10.11。出于这个问题的目的,我有这个小的 JavaScript sn-p:

'use strict';

const os = require('os');
console.log(os.homedir());

我在 Visual Studio Code 上关注了 John Papa(Blog entryPluralsight Visual Studio Code JavaScript Intellisense - 对于那些有帐户的人),因此我希望 VSC 在输入可用时提供 Intellisense 和快速修复选项。

在上面的sn-p中VSC可以识别consolelog()(我用的是hoover,不过和Intellisense一样):

但不是oshomedir()

但是typings/main/ambient/node/index.d.ts 中提供了所有 4 种类型。我知道os 的区别在于require,但在John Papa 的视频课程中,VSC 还为所需模块提供了IntelliSense。不同之处在于 John Papa 使用的是 tsd,而我使用的是 typings

所以我的问题是

  • 如何为所有已知类型启用 Intellisense?
  • 如果 VSC 为我提供快速修复(缺少类型的模块下的绿线),我该怎么做?

【问题讨论】:

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


    【解决方案1】:

    我在全局“进程”对象上遇到过这种情况。仅当我向文件中添加任何“require”语句时,Vscode 才为进程对象启用智能感知。

    所以如果没有其他require语句,可以添加

    const process = require('process');
    

    在脚本的开头获取智能感知。

    【讨论】:

      【解决方案2】:

      有一个名为 TypeScript 和 JavaScript 语言功能 (vscode.typescript-language-features) 的内置扩展被禁用。

      为了启用它,打开扩展面板,搜索“@built-in JavaScript”,然后启用所需的扩展。

      现在您应该可以使用自动完成功能了。

      【讨论】:

      • 这简直要了我的命!我尝试了所有可以在谷歌上找到的解决方案。如果可以的话,我会给你更多的updoots!我花了一个多小时才找到这条评论!谢谢陌生人!
      • 由于某种原因,我在一年前改变了一些东西并忘记了。谢谢!
      【解决方案3】:

      好吧,经过 4 小时的谷歌搜索,我决定卸载 nodejs、npm 和 typescript,然后重新安装它们。上一次我使用 nvm 安装它们,但这次我决定不使用 nvm 只是从节点源安装它们,因为我使用的是 Ubuntu 我执行了以下命令,对于 windows 或 mac,只需安装它们而无需任何软件包或版本管理器。

      curl https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
      sudo apt-add-repository "deb https://deb.nodesource.com/node_7.x $(lsb_release -sc) main"
      sudo apt-get update
      sudo apt-get install nodejs
      
      

      上面的命令安装了 nodejs 和 npm,然后安装 typescript 我运行了下面的命令

      sudo npm install --global typescript
      

      我将我的 VSCode 更新到了最新版本。

      然后在我的 VSCode 的右下角,我点击了 javascript 来更改语言模式,我在搜索栏上写了 'type' 并选择 typescript 作为我新选择的语言模式............宾果游戏

      【讨论】:

        【解决方案4】:

        以上链接已过时。在旧版本的 VS Code 中,您需要引用您的类型,例如 /// <reference path> for somelibrary.d.ts

        对于新版本,您需要通过在项目的根目录创建jsconfig.json 来初始化您的项目,并在其中添加以下内容:

        {
            "compilerOptions": {
                "target": "es5",
                "module": "commonjs"
            },
            "exclude": [
              "node_modules"
            ]
        }
        

        接下来安装您需要的类型。您可以使用 tsd 或类型。在您的情况下,您需要安装tsd install nodetypings install node --ambient。确保您已安装 typings/tsd。重启项目。

        请参考文档:

        1. 设置 JS 项目 - https://code.visualstudio.com/docs/languages/javascript
        2. Node.js - https://code.visualstudio.com/docs/runtimes/nodejs
        3. 调试 - https://code.visualstudio.com/docs/editor/debugging

        更新:

        从 1.7 版开始不需要手动安装类型,它们应该是自动下载的。 Better JavaScript IntelliSense

        【讨论】:

        • 正确的jsconfig.json IntelliSense 正在工作。但是,当您在第一个链接中阅读文档时,它应该是默认行为,即使没有 `jsconfig.json´ 可用:注意:如果您的工作区中没有 jsconfig.json,VS Code 将默认情况下排除 node_modules 文件夹和 out 属性定义的文件夹。 + IntelliSense 会自动为项目文件夹中的 CommonJS 和 AMD 模块提供。 所以我认为这只是一个错误没有配置文件就无法工作。无论如何,现在它可以工作了。感谢您的回答!
        • code.visualstudio.com/updates 他们已经改变了 jsconfig.json 的这种行为。 > 如果您的工作区中没有 jsconfig.json,则使用以下默认值:排除列表包括 node_modules 文件夹和由 out 属性定义的文件夹。请注意,如果您没有定义 jsconfig.json 来标记项目的根目录,那么每个 JavaScript 文件都被 Salsa 视为一个岛。如果没有 jsconfig.json 文件,跨文件和 Typings 文件 IntelliSense 将无法工作。
        • 我认为这是使用测试版软件的缺点,事情变化很快。
        • 您的问题解决了吗?你能分享更多信息吗?
        猜你喜欢
        • 1970-01-01
        • 2017-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-21
        • 2016-07-21
        • 2021-05-24
        • 2019-01-25
        相关资源
        最近更新 更多