如何在 vscode 中使用自己的 javascript 文件获取智能感知

Posted

技术标签:

【中文标题】如何在 vscode 中使用自己的 javascript 文件获取智能感知【英文标题】:How to get intellisense with own javascript files in vscode 【发布时间】:2018-01-14 21:15:17 【问题描述】:

我正在使用 vscode Version 1.14.2 (1.14.2) 并且我正在尝试为我自己的 javascript 文件获取智能感知。为了测试这一点,我创建了两个文件 test.jsmain.js。在test.js 我有以下代码...


  Test = ;

  let testObj = ;

  Test.getAllTest = function() 
    return testObj;
  ;

在我的main.js 文件中,我有以下内容...

/// <reference path="./test.js" />

  Test.

我想对我自己的代码进行智能感知。在vscode中可以实现吗?

2017 年 8 月 10 日更新

如您所见,前面的代码是一个愚蠢的 sn-p。让我粘贴我正在进行的练习中的代码...

"use strict";

var $ = require("../lib/node_modules/jquery/dist/jquery.min.js");

let line = console.log;
let bakery = ;

bakery.loadInventory = function() 
  return new Promise(function(resolve, reject) 
    $.ajax(
      url: "https://cake-2444b.firebaseio.com/ccakes.json"
    )
      .done(function(data) 
        resolve(data);
      )
      .fail(function(error) 
        reject(error);
      );
  );
;

module.exports = bakery;

jQuery 是用--save-dev 安装的,我怀疑我不能因为这个原因require('jQuery')。前面的代码存在于一个名为bakery-factory.js 的文件中。贝娄,我附上了一张屏幕截图,显示智能感知不适用于该模块。

我想补充一点,我正在使用 Grunt 来运行一些任务。我不确定这是否与智能感知问题有关。我对编辑器非常满意,我希望它能够正常工作。

2017 年 8 月 11 日更新

按照您的建议,我得到了它的工作......

let bakery = 
    loadInventory: function(...

我以前的方法不行……

let bakery = 

bakery.loadInventory = function(...

谢谢你的解释!!

【问题讨论】:

【参考方案1】:

VSCode 1.15 在这种情况下只能提供有限的智能感知。有两个问题:

我们不支持隐式全局分配,例如 Test = ...。您需要声明变量var Test = ...,然后创建一个简单的jsconfig.json 文件,以便您工作区中的所有JS 文件共享相同的全局上下文。

我们的智能感知也无法识别在创建对象后添加到对象的属性。这是一个错误并由以下人员跟踪:https://github.com/Microsoft/TypeScript/issues/10868 相反,您需要在分配时声明命名空间成员:var Test = getAllTest: ...

如果可能,我建议您考虑使用具有明确定义的导入和导出的适当模块。这些将提供更好的 IntelliSense 体验,更重要的是,使代码更易于维护和推理。

【讨论】:

以上是关于如何在 vscode 中使用自己的 javascript 文件获取智能感知的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vscode 中实现自己的代码大纲布局?

VSCode - 如何使用启动配置调试启动自己的调试器的节点程序?

vscode如何增量推送代码到svn服务器

在vscode中使用gdb调试

一个统计编码时长的Vscode插件神器

上传及更新代码到github(以及如何在vscode上提交自己的代码)