错误:EMFILE:打开的文件太多 - React Native CLI

Ami*_*mir 31 react-native react-native-ios

我尝试使用 react-native start 运行 react-native-cli 项目,但是 Metro bundler 失败了,说如下:

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
Run Code Online (Sandbox Code Playgroud)

Rom*_*mar 56

只需关闭所有其他文件并重试。如果您在 android 上运行cd android,请确保./gradlew cleanreact-native run-android. 如果这不能解决问题,则您的文件监视服务可能存在问题。尝试这个

$ brew update
$ brew install watchman
Run Code Online (Sandbox Code Playgroud)

  • 运行 `brew reinstall watchman` 最终修复了我的错误(必须执行 `xcode-select --install` 才能正常工作)。我这样做后,它要求访问文档文件夹的权限。 (3认同)
  • 我在ios上运行。我没有看到任何正在运行的文件 (2认同)
  • 在 Catalina 中,有时 watchman 无权访问项目所在的 Document 文件夹,因此会出现此错误,请确保您具有所需的权限,否则请尝试再次删除并添加 watchman。 (2认同)
  • 为我工作,我在Mac M1上使用Bigsur,并且从nodejs 16升级到17(而不是composer)我遇到了这个问题,并使用“arch -arm64 brew install watchman”安装watchman帮助了我,我正在评论,以防有人跑进入同一个问题 (2认同)

Żab*_*jad 22

就我而言,升级守望者并没有帮助。

更新 Node.js 后开始出现此问题。

感谢nvm,我回到节点 v8.11.3(我更新到 v12.0.4)并且这个问题消失了。

这可能会帮助你们中的一些人遇到同样的问题......

  • 这确实也发生在我身上。我刚刚从节点“10.16.2”升级到最新的 LTS(在撰写本文时“12.16.1”)并遇到了这个问题。我将“.nvmrc”恢复为“10.16.2”,效果非常好。 (3认同)

luk*_*uke 21

就我而言,我认为此错误是由于节点升级而发生的。

删除node_modules文件夹并运行npm install解决了问题。


小智 18

我正在使用 Mac 并收到 EMFile 错误。当我安装文件观察器时它已解决

brew install watchman

  • 这对我有用:1 - 删除节点模块 2 - 重新安装 watchman 3 - 安装节点模块 4 - 然后尝试构建项目 (2认同)

Osc*_*car 16

我需要像其他人在这里所做的那样watchman安装,但是我还需要使用以下行更新:以便 xCode 可以在我的 M1 MacBook Pro 中找到。brewReact Native Xcode build scriptexport PATH=/opt/homebrew/bin:$PATHwatchman

React Native Xcode 构建脚本位置:./node_modules/react-native/scripts/react-native-xcode.sh


小智 10

我使用的是 MAC 和 Node v12.13.1。我升级了守望者,问题得到了解决。

watchman 4.9.0_2 -> 4.9.0_4


Mic*_*ton 9

升级我的节点版本后我遇到了这个问题。在我的情况下,降级不是一种选择。

brew install watchman没有解决这个问题,因为 watchman 已经安装在我的机器上。brew upgrade watchman帮我解决了这个问题。


小智 9

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.
Run Code Online (Sandbox Code Playgroud)

PS:npm install没用。它必须与brew install.


小智 6

无论我做什么,我都无法让它发挥作用。最终对我有用的是使用以下命令

$ sudo sysctl -w kern.maxfiles=10485760
$ sudo sysctl -w kern.maxfilesperproc=1048576
Run Code Online (Sandbox Code Playgroud)

位于: https: //facebook.github.io/watchman/docs/install.html#mac-os-file-descriptor-limits

我有一台 M1 Pro。希望这对某人有帮助。