需要解决方法使WebStorm的自动完成能够解析第三方模块方法

时间:2013-01-14 11:05:14

标签: javascript node.js webstorm

几乎所有第三方模块WebStorm的自动获取都无法解析方法/字段。在自动完成下,我的意思是所有类似intellisense的功能。 例如:

var async = require('async');
async.series() //WebStorm's tooltip says: Unresolved function or method series()

同时解析

async.exports.series(). 

但是这会导致运行时错误:

TypeError: Cannot call method 'series' of undefined

对于我自己的模块,我找到了解决方法。如果我在模块中这样做:

var myModule = module.exports;
myModule.someMethod = function(){
...
}

然后someMethod的自动缩放工作正常。

关于上述所有问题,我有一堆问题 1.为什么ide无法解析async.series()?
2.为什么async.exports.series()导致运行时错误?
3.如何自动完成自适应工作?

WebStorm 5.0.4。

3 个答案:

答案 0 :(得分:18)

转到设置 - > JavaScript - >图书馆 - >检查“Node.js Globals”

答案 1 :(得分:12)

使用new如下:

var async = new require('async');

答案 2 :(得分:2)

新的WebStorm v7能够为流行的模块定义Typescript社区存根。这部分解决了自动完成和IDE警告的问题。

对于不太受欢迎的模块,我更喜欢使用这种丑陋的作弊:

//noinspection ConstantConditionalExpressionJS,JSPotentiallyInvalidConstructorUsage
var async = false ? new require('async') : require('async');

但是,当某个算法(例如迭代文件系统)将属性附加到模块时,这并不能解决问题。对于小型和不受欢迎的模块,这是一种罕见的情况。

顺便说一句,async已经在git@github.com中的typescript存根:borisyankov / DefinitelyTyped.git存储库。