2017-04-11 91 views
0

(编辑:更新了我试过的东西和我遇到的问题的更多信息。)如何让Intellisense引用另一个文件夹中的JS文件?

我试图让Intellisense识别并在我的项目中使用常用文件夹中的JS文件。我现在的结构是这样的:

  • .vscode
    • launch.json
  • common
    • jsconfig.json
    • MyLib.js
  • tests
    • jsconfig.json
    • index.html
    • runtests.js
  • demo
    • jsconfig.json
    • index.html
    • demo.js

MyLib.js很简单:

function MyLib(){} 
MyLib.prototype = { constructor: MyLib }; 

demo/jsconfig.json文件看起来像这样:

{ 
    "compilerOptions": { 
     "target": "ES5" 
    }, 
    "include": [ 
     "../common/MyLib.js" 
    ] 
} 

现在,当我编辑demo.js,我开始键入:var x = new MyL ...没有任何反应。

我在配置中丢失了什么吗?它需要某种文件吗?

更新:

我更新了我的demo/jsconfig.json看起来像这样(加files像马特Bierner建议):

{ 
    "compilerOptions": { 
    "target": "ES5" 
    }, 
    "files": [ 
    "demo.js", 
    ], 
    "include": [ 
    "../common/MyLib.js" 
    ] 
} 

...我能看到MyLib中的建议,但我在demo.js创建的对象...

var x = new MyLib(); 

... x无法看到MyLib的任何属性,这是(IMO)Intellisense的要点。

回答

1

尝试配置项目,使包括两个文件,或者使用files选项明确列出项目中的所有文件:

{ 
    "compilerOptions": { 
    "target": "ES5" 
    }, 
    "files": [ 
    "demo.js", 
    "../common/MyLib.js" 
    ] 
} 

或使用include选项:

{ 
    "compilerOptions": { 
    "target": "ES5" 
    }, 
    "files": [ 
    "demo.js", 
    }, 
    "include": { 
    "./**/*.js" 
    ] 
} 

使用这个配置,我看到demo.jsMyLib的建议。 Here's more information about the jsconfig options

+0

我试过两种方法,都允许我在'demo.js'中看到'MyLib',但这正是Intellisense似乎结束的地方。如果我有'var x = new MyLib();',在下一行输入'x.'只会给出文件中的建议(“MyLib”和“x”)。我没有在建议中看到MyLib的原型或其构造函数。 (P.S.你的链接去了'tsconfig.json'的文档,但是我根本没有使用TypeScript。) – TheJim01

+0

这看起来像是TypeScript(它支持VSCode JS语言特性)的一个bug。我已经打开了两个错误来跟踪此:https://github.com/Microsoft/TypeScript/issues/15162和https://github.com/Microsoft/TypeScript/issues/15163。另外,'jsconfig'几乎是一个'tsconfig',并且删除了任何TypeScript特定的配置选项。该文档应同时适用于 –

+0

感谢您提交错误。我正在重新阅读VSCode中关于JavaScript的文档。如果我拿出任何东西,我会更新我的帖子。 – TheJim01

相关问题