几乎所有第三方模块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。
答案 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存储库。