【问题标题】:React Native Error: EMFILE: too many open files, watchReact Native 错误:EMFILE:打开的文件太多,请注意
【发布时间】:2021-01-21 18:08:24
【问题描述】:

收到以下错误,但不能 100% 确定原因。目前,当我在 ios 模拟器中运行我的应用程序时遇到此问题

我尝试过 npm install watchman,但我刚刚看到 npm 包的最新更新,似乎已经被贬值了。

events.js:292
      throw er; // Unhandled 'error' event
      ^

Error: EMFILE: too many open files, watch
    at FSEvent.FSWatcher._handle.onchange (internal/fs/watchers.js:127:28)
Emitted 'error' event on NodeWatcher instance at:
    at NodeWatcher.checkedEmitError 
    at FSWatcher.emit (events.js:315:20)
    at FSEvent.FSWatcher._handle.onchange (internal/fs/watchers.js:133:12) {
  errno: -24,
  syscall: 'watch',
  code: 'EMFILE',
  filename: null
}

【问题讨论】:

    标签: ios react-native npm


    【解决方案1】:

    这个错误是由 watchman 引起的。

    你应该在终端中运行brew install watchman

    如果 watchman 安装失败,您应该通过以下方式将这些目录的所有权更改给您的用户

    sudo chown -R $(whoami) /usr/local/etc/bash_completion.d /usr/local/lib/pkgconfig /usr/local/var/log
    

    请参考终端中的提示。

    最后你运行 brew install watchman。问题应该解决了。

    【讨论】:

    • 哇,这成功了。我不知道为什么。我可以在一个 repo 中运行我的测试,但不能在几乎相同堆栈的另一个 repo 中运行。
    • 这并没有解决我的问题。运行brew reinstall watchman 最终修复了错误(必须执行xcode-select --install 才能使其正常工作)。
    【解决方案2】:

    对于遇到此问题的 Mac M1 用户,我尝试了上述 brew install 和 upgrade watchman,但没有成功。我的具体问题是 react-native 项目可以通过“npm run ios”很好地构建在模拟器上,但是当通过 xcode 归档或构建时,我会收到此错误。几个小时后,这就是:

    • 进入 Mac 系统偏好设置中的安全性,并授予 watchman 完整磁盘访问权限
    • 您正在构建的项目由于某种原因(可能是因为 Apple 限制访问)在您的桌面或文档位置无法运行。一旦我将它移到 /Users/myname/ 下,它最终会在 xcode 中构建和存档。

    希望这可以节省其他人我花费 6 个小时调试并试图弄清楚这一点的时间。

    编辑:这又坏了,所以必须按照这个来修复它:

    此错误是由于 mac m1 芯片的 fsevents 模块中的错误造成的。见帖:https://github.com/facebook/metro/issues/668

    新版本的守望者解决了这个问题。通过 brew 升级你的守望者。删除您的项目并从 git 下载,并与 pod install 一起重建所有内容,然后它应该没有问题。

    【讨论】:

    • 嗨@Ekram 我在存档时遇到了同样的问题。我已经将守望者更新到 2021.06.07.00 仍然面临这个问题。有什么帮助吗?
    • 你能尝试用最新的节点从头开始创建一个空的 React Native 项目,React Native 和 Watchman 并尝试归档吗?我的一些朋友通过这种方法报告了成功。如果这可行,那么您可以缩小项目中的问题范围。
    【解决方案3】:

    在我的情况下(M1 Mac Mini),它是自制软件安装。我使用这种 iTerm2 设置重新安装了自制软件:Correct way to Install and use Homebrew on M1 Macsbrew install watchman。之后编译顺利。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-03
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      相关资源
      最近更新 更多