2017-01-18 62 views
1

我遇到了一个问题,其中一些重新启动后吞下手表,我得到一个警告,说明我可能有内存泄漏。我认为这是因为我在每次重新启动时都会启动一个新的gulp手表实例,一遍又一遍地触发一个新的服务器和另一个新的手表。我不确定情况如何,不知道如何解决这个问题。Gulp手表产生内存泄漏

这是我的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

这就是我的想法,有没有办法避免它?吞噬是否有杀死任务的方法?因为现在我认为每次手表开机时,我都会得到一个新的npm开始,而不会停止旧的开机。 – loganhuskins

+0

,而不是调用'dev'调用'lint'。 –

1

正如另一个用户指出,你打电话gulp devgulp watch基本上创建一个无限循环,这会导致。

要增加,我会鼓励使用默认的任务:

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