快速错误:EMFILE,打开的文件太多

我得到以下非常恼人的错误:

Error: EMFILE, too many open files '/home/savagegames.net/views/index.jade' at Object.openSync (fs.js:240:18) at Object.readFileSync (fs.js:128:15) at View.contents (/home/savagegames.net/node_modules/express/lib/view/view.js:121:13) at Function.compile (/home/savagegames.net/node_modules/express/lib/view.js:68:45) at ServerResponse._render (/home/savagegames.net/node_modules/express/lib/view.js:417:18) at ServerResponse.<anonymous> (/home/savagegames.net/node_modules/express/lib/view.js:318:17) at /home/savagegames.net/node_modules/express-mongoose/index.js:45:21 at resolve (/home/savagegames.net/node_modules/express-mongoose/index.js:75:12) at ServerResponse.expressmongoose [as render] (/home/savagegames.net/node_modules/express-mongoose/index.js:37:12) at /home/savagegames.net/controllers/index_controller.coffee:49:18 

我相信这是Express的问题; 我该如何补救? 谢谢。

从我发现的情况来看,发生错误时会发生,有些文件没有closures(当然这是一个错误)。 在我的情况下,node-postgres错误导致(奇迹般)耗尽可用的描述符。 当我删除导致db错误的代码时,EMFILE消失。

我想这可以修复node.js代码 – 它应该closures垃圾收集文件对象。 尽pipe可能发生这些丢失的文件描述符仍然被别的东西锁住。

我经历了很多的资源,但相关的答案是在快递的文档:

 app.enable('view cache') 

它真的帮了很多,特别是很多caching命中解释,它根本不打开文件。