错误:EMFILE:打开的文件太多 - React Native CLI
Posted
技术标签:
【中文标题】错误:EMFILE:打开的文件太多 - React Native CLI【英文标题】:Error: EMFILE: too many open files - React Native CLI 【发布时间】:2019-11-02 20:50:38 【问题描述】:我尝试使用 react-native start 运行 react-native-cli 项目,但 Metro 捆绑器失败,提示如下:
events.js 187
throw er; //Unhandled 'error' event
Error: EMFILE: too many open files, watch
Emitted 'error' event on NodeWatcher isntance at:
at NodeWatcher: checkedEmitError (.../react-native-project/node_modules/sane/src/node_watcher.js:143:12)
at FSWatcher.emit (events.js:210:5)
at FSEvent.FSWatcher:_handle onchange (internal/fs/watchers.js:129:12)
errno: -24,
syscall: 'watch',
code : 'EMFILE',
filename: null
)
Process terminated. Press <enter> to close the window
【问题讨论】:
请标记我的答案是否对你有帮助 尝试您的解决方案后我仍然遇到问题。 尝试在终端上设置ulimit:ulimit 4096 切换到节点 16 为我解决了这个问题nvm alias default 16
【参考方案1】:
只需关闭所有其他文件,然后重试。如果您在 android 上运行,请确保在 react-native run-android
之前运行 cd android
和 ./gradlew clean
。
如果这不能解决,您的文件监视服务可能存在问题。试试这个
$ brew update
$ brew install watchman
【讨论】:
我在 ios 上运行。而且我没有看到任何正在运行的文件 这个问题是为我提出的,因为我有两个 react-native 项目在不同的目录中运行,具有不同的版本。brew upgrade watchman
帮了我
在 Catalina 中,有时守望者无权访问项目所在的 Document 文件夹,因此会出现此错误,请确保您已获得所需的权限,否则请尝试再次删除和添加守望者。
Running brew reinstall watchman
终于为我修复了错误(必须做 xcode-select --install
才能让它工作)。在我这样做之后,它要求访问 Document 文件夹的权限。
为我工作,我在 Mac M1 上使用 Bigsur,我从 nodejs 16 升级到 17(相当作曲家)我遇到了这个问题,用arch -arm64 brew install watchman
安装守望帮助了我,我在评论以防有人遇到同样的问题【参考方案2】:
我使用的是 Mac 并收到 EMFile 错误。安装文件观察器时解决了
brew install watchman
【讨论】:
这对我有用。我正在使用 Macbook pro M1 芯片 MacOS Big Sur。节点版本为 14.16.0。我在处理使用 Expo 创建的 React 本机项目时遇到了问题。brew install watchman
为我工作。谢谢
这对我有用:1 - 删除节点模块 2 - brew reinstall watchman 3 - 安装节点模块 4 - 然后尝试构建项目【参考方案3】:
就我而言,升级 watchman 并没有帮助。
这个问题是在更新 Node.js 后开始发生的。
感谢nvm
,我回到节点v8.11.3(我更新到v12.0.4),这个问题就消失了。
这可能会帮助你们中的一些人遇到同样的问题......
【讨论】:
这也确实发生在我身上。我刚刚从 Node10.16.2
升级到最新的 LTS(在撰写本文时 12.16.1
)并遇到了这个问题。我将.nvmrc
调回10.16.2
,它就像一个魅力。
这里也一样。该死的节点 12。
我相信这对我来说是解决办法。降级 Node 为我解决了这个问题
Node v14.17.4 对我有同样的错误。 @MarceloSouza,您能告诉我您的确切节点版本吗?提前致谢。
如果您之前使用损坏的版本安装了节点版本,请在更改节点版本后重新安装 node_modules
【参考方案4】:
我使用的是 MAC 和 Node v12.13.1。我升级了守望者,问题得到了解决。
watchman 4.9.0_2 -> 4.9.0_4
【讨论】:
完成此操作后,我能够解决我的问题。非常感谢。【参考方案5】:我在升级节点版本后遇到了这个问题。就我而言,降级不是一种选择。
brew install watchman
没有解决这个问题,因为我的机器上已经安装了 watchman。 brew upgrade watchman
帮了我大忙。
【讨论】:
这个命令:“brew upgrade watchman”对我有用。【参考方案6】:就我而言,我认为这个错误是由于节点升级而发生的。
删除node_modules
文件夹并运行npm install
解决了这个问题。
【讨论】:
【参考方案7】:TLTR:brew install watchman
在 Macbook 上解决了它。
我刚买了一台新的 Macbook,在 React Native 项目中遇到了同样的问题。在 Windows 上,该项目运行良好,但在 Mac 中,使用 npm start 运行项目几秒钟后,它因以下错误而崩溃:
Error: EMFILE: too many open files, watch
at FSEvent.FSWatcher._handle.onchange (internal/fs/watchers.js:178:28)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ start: `expo start`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
PS:npm install
没用。必须是brew install
。
【讨论】:
这如何解决问题?和Node版本有关吗? 我有一台节点为 14.17.0 的 Macbook Air M1,由于某种原因,我在尝试运行 expo 应用程序时遇到了上述错误。安装 Watchman 修复了该错误。我猜可能 Node 附带的 watchman 版本比要求的要旧。【参考方案8】:我需要安装watchman
和brew
,就像其他人在这里所做的那样,但是我还需要使用以下行更新React Native Xcode build script
:export PATH=/opt/homebrew/bin:$PATH
,以便xCode 可以在我的M1 MacBook Pro 中找到watchman
。
React Native Xcode 构建脚本位置:./node_modules/react-native/scripts/react-native-xcode.sh
【讨论】:
这对我来说是解决办法 - 谢谢!【参考方案9】:对我来说,一个简单的upgrade watchman
没有帮助,更改我的 Node 版本也没有。
我正在使用 XCode 12.5 在 M1 Mac 上进行构建,并且必须:
使用 x86_64 自制程序实例安装 watchman 在 Rosetta 终端中运行 Metro 服务器 不使用 Rosetta运行 XCode如果这是您第一次使用 x86_64 自制程序实例安装软件包,请记住将其添加到您的 PATH。
【讨论】:
哇,这也为我解决了这个问题?我没想到在 Rosetta 模式下运行终端。【参考方案10】:在安装 php Storm 后,我遇到了一堆这样的错误以及其他一些错误,例如找不到“Podfile.lock”等。
我根据 *** 搜索的组合执行了以下操作来更正错误:
-
下载、安装并同意 XCode 许可
通过 brew.sh 的终端窗口安装 brew
安装节点
按照 PHPStorm 中 iOS 终端窗口中的说明进行操作
现在开始工作了!
【讨论】:
【参考方案11】:尝试“brew install watchman”命令,
如果“brew”未安装,请按照以下步骤操作
关注this steps,这对我有用。
【讨论】:
【参考方案12】:在我的情况下,我在将开发机器从 Linux 切换到 OS X 后遇到了这个错误。在我运行 brew upgrade watchman
之前,上述方法都不适合我。
【讨论】:
【参考方案13】:我通过macports
安装了守望者。然而,“Bundle React Native 代码和图像”构建阶段不知道 watchman 的路径。
添加
export PATH=/opt/local/bin:$PATH
在脚本的开头为我解决了这个问题
【讨论】:
【参考方案14】:以下步骤在 MacOS 上对我有用:
-
从官方网站https://brew.sh/更新/安装 Homebrew
安装 Watchman:b重新安装 watchman
【讨论】:
以上是关于错误:EMFILE:打开的文件太多 - React Native CLI的主要内容,如果未能解决你的问题,请参考以下文章
React Native + Jest EMFILE:打开文件过多错误
EMFile:打开的文件太多,观看 - 构建 Release 反应原生 iOS 应用程序