我有c9工作区,我正在使用grunt-watchify运行grunt来自动创建捆绑文件。当我突然得到这个错误(grunt-watchify上的调试是真的)时它工作正常:
./app/js/controller.js [ [ '.', 'app', 'js', 'controller.js' ] ]
./app/js/controller.js [ [ '.', 'app', 'js', 'controller.js' ] ]
stat [ '/home/ubuntu/workspace',
'./app/js/controller.js',
'=',
'./app/js/controller.js' ]
emit! match
matches[0] = { './app/js/controller.js': true }
emitting end [ './app/js/controller.js' ]
emit! end
Fatal error: watch EMFILE
现在它无法正常工作。如果我将watchify更改为browserify,则可以正常工作。
这是我的Gruntfile.js:
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
compass: {
dist: {
options: {
appDir: 'app/',
//sassDir: 'sass',
//cssDir: 'app/stylesheets'
}
},
dev: {
options: {
appDir: 'app/',
watch: true
}
}
},
concurrent: {
dev:
['watch', 'compass:dev']
},
watchify: {
dev: {
src: './app/js/controller.js',
dest: 'app/bundle.js',
debug: true
},
},
watch: {
css: {
files: '**/*.scss',
tasks: ['compass']
},
app: {
files: 'app/js/bundle.js',
options: {
livereload: true
}
}
},
browserify: {
dist: {
files: {
'app/bundle.js': [
'app/js/*.js',
]
}
},
},
bower: {
install: {
//just run 'grunt bower:install' and you'll see files from your Bower packages in lib directory
},
options: {
targetDir: './app/lib'
}
}
});
grunt.loadNpmTasks('grunt-concurrent');
grunt.loadNpmTasks('grunt-contrib-compass');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-browserify');
grunt.loadNpmTasks('grunt-watchify');
grunt.loadNpmTasks('grunt-bower-task');
grunt.registerTask('default',['bower:install', 'watchify', 'concurrent']);
grunt.registerTask('heroku',['compass:dist', 'browserify', 'bower:install']);
}
答案 0 :(得分:0)
EMFILE表示打开的文件太多。这很可能是由仍在运行的进程引起的,并且以某种方式打开了许多文件。您可以使用" ps aux"检查正在运行的进程。在Cloud9中,您也可以通过“工具”菜单(工具>流程管理器)在流程管理器中看到这一点。如果您发现任何看起来可疑的进程(例如节点进程正在运行),您可以通过进程管理器UI或键入" kill"哪个是要杀死的进程的进程ID。之后,您应该能够在没有EMFILE错误的情况下再次运行grunt。 (假设grunt本身不会导致问题)。