2017-01-18 6 views
1

gulp watchで何度か再起動した後、メモリリークが発生する可能性があるという警告が表示される問題があります。私は、再起動するたびに新しいgulp watchのインスタンスを開始し、新しいサーバーと別の新しい時計を何度も起動させるためだと思います。私はそのようなケースではないと確信していない場合は、それを修正する方法はありません。Gulp Watchでメモリリークが発生する

ここは私のgulpfile.jsです。

const gulp = require('gulp'); 
const exec = require('child_process').exec; 
const gutil = require('gulp-util'); 
const eslint = require('gulp-eslint'); 

gulp.task('dev', (() => { 
    gulp.start('test'); 
    gulp.start('lint'); 
    gulp.start('server'); 
    gulp.start('watch'); 
    return gutil.log('Gulp is running!'); 
})); 

gulp.task('server', (cb) => { 
    exec('npm start', (err, stdout, stderr) => { 
    gutil.log(stdout); 
    gutil.log(stderr); 
    cb(err); 
    }); 
}); 

gulp.task('test', (cb) => { 
    exec('npm test', (err, stdout, stderr) => { 
    gutil.log(stdout); 
    gutil.log(stderr); 
    cb(err); 
    }); 
}); 

gulp.task('watch',() => { 
    gulp.watch(['./app.js', './views/*', './routes/*'], ['dev']); 
}); 

gulp.task('lint',() => { 
    return gulp.src(['**/*.js', '!node_modules/**']) 
    .pipe(eslint()) 
    .pipe(eslint.format()); 
}); 

そして、私のエラーは次のとおりです。

(node:808) Warning: Possible EventEmitter memory leak detected. 11 change listeners added. Use emitter.setMaxListeners() to increase limit 
+0

私は警告を追加しました。 – loganhuskins

答えて

4

あなたgulp.watchは、今度は別のgulp.watchを作成するタスクdevを呼び出します。私のお金はそれにあります。

+0

それは私もそう思います、それを避ける方法はありますか?ガルプは仕事を殺す方法を持っていますか?今はwatchがdevを実行するたびに、私は古いものを止めることなく新しいnpmの起動を得ていると思うからです。 – loganhuskins

+0

を呼び出す代わりに、 'dev'呼び出し' lint'を呼び出します。 –

1

別のユーザーが指摘したように、gulp watchにはgulp devを呼び出すと、基本的には無限ループが作成されます。

私はデフォルトのタスクを使用して励ます、追加するには:

gulp.task('default', ['dev', 'test', 'lint', 'watch', 'server']); 
関連する問題