2017-01-18 12 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 называет задачу dev, которая в свою очередь, создает еще один gulp.watch. Мои деньги на это.

+0

Вот что я думаю тоже, есть ли способ избежать этого? У gulp есть способ убить задачи? Потому что сейчас я думаю, что каждый раз, когда часы запускают dev, я получаю новый запуск npm, не останавливая старый. – loganhuskins

+0

вместо вызова 'dev' call' lint'. –

1

Как отметил другой пользователь, вы вызываете gulp dev в gulp watch, в основном создавая цикл inifinity, который может вызвать это.

Чтобы добавить, я хотел бы призвать с помощью задачи по умолчанию:

gulp.task('default', ['dev', 'test', 'lint', 'watch', 'server']);