React Native 错误:EMFILE:打开文件太多,请观看

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

出现以下错误,但不能 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
4个回答
12
投票

这个错误是由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
。问题应该解决了。


5
投票

对于遇到这个问题的Mac M1的人,我尝试了上面的brew安装和升级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,然后它应该不会出现任何问题。


3
投票

尝试了一切并意识到我的node_modules中没有fsevents(即使它是一个新正确创建的React Native项目),执行“npm install fsevents”,这解决了问题。


0
投票

我的 MacBook Pro M3 中的问题已解决,解决方案如下。

在终端中运行以下命令:

rm -rf node_modules/
npm install
npm start or npm expo start
© www.soinside.com 2019 - 2024. All rights reserved.