错误:ENFILE:文件表溢出,在 Mac 上运行反应时 scandir

Posted

技术标签:

【中文标题】错误:ENFILE:文件表溢出,在 Mac 上运行反应时 scandir【英文标题】:Error: ENFILE: file table overflow, scandir while run reaction on Mac 【发布时间】:2017-12-13 17:36:43 【问题描述】:

我正在尝试在以下命令中在 mac osx 10.12.15 上安装和运行 Reaction

npm install -g 反应-cli 反应初始化 cd反应 反应

然后我遇到了以下错误,我刚接触 Reactjs 开发人员,所以很紧张。而且它只是与软件包版本兼容,但我该如何解决这个问题

=> Started proxy.
=> Started MongoDB.
/Users/sopheak/.meteor/packages/templating-compiler/.1.3.2.1411czp++os+web.browser+web.cordova/plugin.compileTemplatesBatch.os/npm/node_modules/meteor/promise/node_modules/meteor-promise/promise_server.js:190
      throw error;
      ^
Error: ENFILE: file table overflow, scandir '/Users/sopheak/Documents/cam/react/reaction/packages/gridfs'
    at Error (native)
    at Object.fs.readdirSync (fs.js:808:18)
    at Object.wrapper (/tools/fs/files.js:1586:35)
    at readDirectory (/Users/sopheak/.meteor/packages/meteor-tool/.1.5.0.15auley++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/fs/watch.js:338:26)
    at Watcher._fireIfDirectoryChanged (/Users/sopheak/.meteor/packages/meteor-tool/.1.5.0.15auley++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/fs/watch.js:490:23)
    at /Users/sopheak/.meteor/packages/meteor-tool/.1.5.0.15auley++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/fs/watch.js:747:12
    at Array.forEach (native)
    at Function._.each._.forEach (/Users/sopheak/.meteor/packages/meteor-tool/.1.5.0.15auley++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/underscore/underscore.js:79:11)
    at Watcher._checkDirectories (/Users/sopheak/.meteor/packages/meteor-tool/.1.5.0.15auley++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/fs/watch.js:736:7)
    at new Watcher (/Users/sopheak/.meteor/packages/meteor-tool/.1.5.0.15auley++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/fs/watch.js:435:10)
    at setupClientWatcher (/tools/runners/run-app.js:800:23)
    at [object Object]._.extend._runOnce (/tools/runners/run-app.js:811:7)
    at [object Object]._.extend._fiber (/tools/runners/run-app.js:890:28)
    at /tools/runners/run-app.js:417:12

【问题讨论】:

【参考方案1】:

sudo launchctl limit maxfiles 16384 16384 && ulimit -n 16384

【讨论】:

【参考方案2】:

这可能是由于 mac 上文件打开文件的限制。默认情况下,它设置为低。您需要增加默认大小。

$ echo kern.maxfiles=65536 | sudo tee -a /etc/sysctl.conf
$ echo kern.maxfilesperproc=65536 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -w kern.maxfiles=65536
$ sudo sysctl -w kern.maxfilesperproc=65536
$ ulimit -n 65536 

请参阅此link 了解更多详情。

【讨论】:

那个。谢谢 它发生在 windows 10... 你知道 windows 的命令是什么吗? kern.maxfileskern.maxfilesperproc 上具有相同的ulimit 让我在尝试构建东西时随机崩溃了不同的程序(因为节点耗尽了所有限制并且其他程序无法打开文件)。此外,考虑到 node_modules 的当前大小,65k 有点小限制 =) 谢谢!你是最棒的!我在尝试通过世博会发布时遇到了这个问题

以上是关于错误:ENFILE:文件表溢出,在 Mac 上运行反应时 scandir的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac 上设置 Laravel php artisan migrate 错误:没有这样的文件或目录 [重复]

在 Mac 上设置 Laravel php artisan migrate 错误:没有这样的文件或目录 [重复]

Linux 中的 Segfault,在 Mac OS 上运行良好

为啥在 Mac 上安装 Apache Airflow 时没有出现此类表错误?

C语言程序运行后 出现exe停止工作 为啥呢?

运行递归线性搜索时出现堆栈溢出错误