有一段时间我一直遇到以下错误:
Error: EMFILE, too many open files '/Users/blagus/Gallery/Websites/Nicsware/Pills/resources/core/auth.node.js'
at Object.fs.openSync (fs.js:427:18)
at Object.fs.readFileSync (fs.js:284:15)
at Object.Module._extensions..js (module.js:473:44)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at instController (/Users/blagus/Gallery/Websites/Nicsware/Pills/engine/mvc.node.js:79:31)
at init (/Users/blagus/Gallery/Websites/Nicsware/Pills/engine/mvc.node.js:57:8)
at route (/Users/blagus/Gallery/Websites/Nicsware/Pills/engine/dispatcher.node.js:268:36)
调用此文件的代码行(mvc.node.js:79)如下:
this.currentRoute.class = require( controllerFile )[dispatchClass].bind( this );
(这是我正在创建的一个框架)
正如您所看到的,文件auth.node.js是通过REQUIRE调用的,因此使用gracefullFS和类似解决方案不适用。此外,这个问题只出现在MacOS上,而在Ubuntu上似乎工作得很好。
有什么想法吗?
auth.node.js
在做什么奇怪的事情吗? 如果我在要求 JS 文件时生成堆栈跟踪,则fs.*
不会出现。 - robertkleprequire
本身引起的,而是由您要求的模块引起的。但是,如果您不发布代码,那只是一个猜测... - robertklep