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. オートコンプリートを機能させるには?

ウェブストーム 5.0.4。

4

3 に答える 3

18

[設定] -> [JavaScript] -> [ライブラリ] -> [Node.js グローバル] にチェックを入れます。

于 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');

ただし、プロパティが何らかのアルゴリズム (ファイルシステムの反復など) によってモジュールに関連付けられている場合、これは問題を解決しません。小さくて人気のないモジュールの場合、これはまれなケースです。

ところで、async は既に git@github.com:borisyankov/DefinitelyTyped.git リポジトリに typescript スタブを持っています。

于 2013-10-30T21:47:45.780 に答える