15

几乎对于所有第三方模块,WebStorm 的自动编译都无法解析方法/字段。在自动完成下,我还指所有类似智能感知的功能。例如:

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。

4

3 回答 3

18

转到设置 -> JavaScript -> 库 -> 检查“Node.js Globals”

于 2013-04-04T23:18:48.370 回答
12

使用 new 如下:

var async = new require('async');
于 2013-01-14T18:52:49.850 回答
2

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

对于不太流行的模块,我更喜欢使用这个丑陋的作弊:

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

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

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

于 2013-10-30T21:47:45.780 回答