2014-09-29 102 views
2

每當我做「咕嚕服務器」,它會自動給我這個錯誤:咕嚕服務器錯誤,EMFILE

Running "watch" task 
Waiting... 
Warning: EMFILE, too many open files 

和未來這樣的:

(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral. 

這通常的處理辦法我已經看到了網絡上正在改變名稱如下所示:

grunt.registerTask('uglify', ['jshint', 'uglify']); 

grunt.registerTask('myuglify', ['jshint', 'uglify']); 

雖然我的問題不能用這種方法修復,因爲我不使用相同的名稱作爲任務。

我gruntfile.js:

module.exports = function(grunt){ 
grunt.initConfig({ 
    sass: { 
    dist: { 
     files: { 
     'styles/css/main.css': 'styles/sass/main.scss' 
     } 
    } 
    } 

    ,watch: { 
    options:{livereload:true}, 
    sass:{ 
     files:'styles/sass/*.scss', 
     tasks:'sass' 
     } 
    }, 

    express:{ 
     all:{ 
      options:{ 
       port:9000, 
       hostname:'localhost', 
       bases:'.', 
       livereload:true 

      } 

     } 
    } 
}); 

grunt.loadNpmTasks('grunt-contrib-sass'); 
grunt.loadNpmTasks('grunt-contrib-watch'); 
grunt.loadNpmTasks('grunt-express'); 
grunt.registerTask('default', ['sass']) 
grunt.registerTask('server',['express','watch']) 

} 

任何想法?

+0

爲什麼在'express'和'watch'配置中都有'livereload'?這是故意的嗎? – jsalonen 2014-09-29 18:04:05

+0

是的,是的。因爲我希望它能夠重新加載。這就是教程所說的 – 2014-09-29 18:13:44

回答

2

我今天遇到了這個浪費時間的錯誤,並在GitHub的倉庫解決方案並沒有爲我工作。在搜索與process.nextTick棄用警告相關的此問題後,我得出結論認爲,依賴於觀看的文件/ glob運行任務是潛在的原因。

這裏的Gruntfile爲我的網站:

module.exports = function (grunt) { 
    grunt.initConfig({ 
     pkg: grunt.file.readJSON('package.json'), 
     watch: { 
      dev: { 
       files: ['**/*.js', 'public/stylesheets/**/*.scss'], 
       tasks: ['express:dev'], 
       options: { 
        spawn: false 
       } 
      } 
     }, 
     express: { 
      dev: { 
       options: { 
        script: 'server.js', 
        node_env: 'development' 
       } 
      } 
     } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-watch'); 
    grunt.loadNpmTasks('grunt-express-server'); 

    grunt.registerTask('default', ['express:dev', 'watch']); 
}; 

我從我的watch任務,重新啓動快速刪除JS文件解決了這個問題。對我來說,上述任務的下方配置工作正常:

watch: { 
    dev: { 
     files: ['public/stylesheets/**/*.scss'], 
     tasks: ['express:dev'], 
     options: { 
      spawn: false 
     } 
    } 
}, 

This SO answer提供了一個類似的修復。有趣的是,我從未在我的Ubuntu機器上遇到過這個問題;當我克隆我的存儲庫時,它今天發生在我的MacBook上。