【问题标题】:How to get intellisense with own javascript files in vscode如何在 vscode 中使用自己的 javascript 文件获取智能感知
【发布时间】: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(...

谢谢你的解释!!

【问题讨论】:

    标签: visual-studio-code vscode-settings javascript-intellisense


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-05-31
      • 2016-08-22
      • 2018-12-08
      • 2015-08-27
      • 1970-01-01
      • 2015-08-27
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      相关资源
      最近更新 更多