在 Windows 7 中打开太多文件(EMFILE 错误)

问题描述 投票:0回答:1

我正在使用 Node.js (0.10.31) 和 Gulp (3.8.8) 自动执行 Windows 7 中的某些任务,但我遇到了以下错误:

events.js:72
    throw er; // Unhandled 'error' event
          ^
Error: EMFILE, open 'c:\myproject\package.json'

我已将项目移至 Ubuntu 并使用

ulimit -n
命令修复该问题,但仍然好奇如何在 Windows 中解决该问题。

我想知道是否有任何限制阻止在 Windows 7 中打开更多文件/套接字,从而导致

EMFILE error
或不?

如果是,我该如何更改该限制?

node.js windows windows-7 gulp
1个回答
3
投票

VSC++ 运行时内部存在限制。应用程序只能通过运行时打开 512 个文件描述符,尽管如果应用程序调用

_setmaxstdio
(我认为 Node 不会),则该值可以增加到 2048。 (这是一个稍微简化的解释,有关更多详细信息,请参阅here。)您无法直接更改此限制(如果您想让节点以某种方式为您调用此函数,则只能将 512 提高到 2048)。

但是您写的您正在使用节点 v0.10.31,它已经很旧了。据我所知(尽管我对此不是 100% 确定),节点同时从使用 VSC++ 运行时进行文件 I/O 切换到没有此限制的本机 WinAPI 调用,因此您可以尝试最新的节点版本(如果您可以选择)。

© www.soinside.com 2019 - 2024. All rights reserved.