1

私はこれを検索して検索しましたが、役に立ちませんでした。私はWeb(Stackoverflowを含む)とNodeのドキュメントを調べて答えを探しましたが、うまくいったものは見つかりませんでした(私の検索が悪いだけかもしれません)。私は gulp 構成ファイルでイベント ストリームを操作しています。また、EventEmitter クラスからの従来の「メモリ リークが検出されました」というエラーが発生している特定のタスクがあります。私が見つけたところによると、この問題に対処するための答えは、EventEmitter クラスの setMaxListeners メソッドを呼び出すことのようです。私の調査によると、イベントストリームには Stream オブジェクトがあり、これは EventEmitter のインスタンスである必要があります。ただし、どのように setMaxListeners を呼び出そうとしても、メソッドが見つかりません。この問題の調査に疲れ果てた後、私はそれをここの Node グルに持ち込むことにしました (I' これは単純だと思いますが、何かが足りないだけです)。これが私のコードです:

return eventStream.merge(
        gulp.src('./jscript/libs/file-one.js'),
        gulp.src('./jscript/libs/filder_one/file-two.js'),
        gulp.src('./jscript/libs/folder_two/file-three.js'),
        gulp.src('./jscript/libs/folder_three/file_four.js'),
        gulp.src('./jscript/libs/folder_four/file_five.js'),
        gulp.src('./jscript/libs/folder_five/file_six.js'), 
        gulp.src('./jscript/libs/file_seven.js'),
        gulp.src('./jscript/libs/file_eight.js'),
        gulp.src('./jscript/lists/rules/*.js')
    )        
    .pipe(concat('my_file.js'))
    .pipe(gulp.dest('./jscript/dist/'))
    .pipe(rename('my_file.min.js'))
    .pipe(uglify())
    .pipe(gulp.dest('./jscript/dist/'));

ありがとう!

4

2 に答える 2

3

Node.js 0.12 (近日リリース予定) では、すべてのエミッターの最大値を設定できます。

var events = require('events');
events.EventEmitter.defaultMaxListeners = 100;

関連するcommitの詳細。

于 2014-02-11T23:00:09.523 に答える
0

これはあなたの質問に対する直接的な回答ではありませんが、複数の「gulp.src()」をマージする代わりに、グロブ パターンの配列を「gulp.src()」に渡すことができます。それはあなたの問題を解決しませんか?

https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulpsrcglobs-options

編集

直接的な答えとして、次のことがうまくいきました:

var merged = eventStream.merge(...);
merged.setMaxListeners(0);
return merged.pipe(...);

イベント リスナーがマージ関数に追加されている間、リスナー カウントはイベント ループのティック間でチェックされるようです。したがって、リスナーを追加した直後に MaxListeners を設定できます。

于 2014-02-12T01:39:20.877 に答える