【发布时间】:2013-11-14 15:03:01
【问题描述】:
有时我遇到以下错误:
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.*不会出现。 -
嗯,在 Linux 机器上它表现得很好。除此之外只是一个简单的要求,给我带来麻烦
-
查看堆栈跟踪,问题不是由
require本身引起的,而是由您需要的模块引起的。再说一次,如果您不发布代码,那只是猜测...