【问题标题】:Error: EMFILE: too many open files - React Native CLI错误:EMFILE:打开的文件太多 - 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

标签: react-native react-native-ios


【解决方案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),这个问题就消失了。

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

【讨论】:

  • 这也确实发生在我身上。我刚刚从 Node 10.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 -&gt; 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】:

    我需要安装watchmanbrew,就像其他人在这里所做的那样,但是我还需要使用以下行更新React Native Xcode build scriptexport 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”等。

    我根据 StackOverflow 搜索的组合执行了以下操作来更正错误:

    1. 下载、安装并同意 XCode 许可
    2. 通过 brew.sh 的终端窗口安装 brew
    3. 安装节点
    4. 按照 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 上对我有用:

            1. 从官方网站https://brew.sh/更新/安装 Homebrew
            2. 安装 Watchman:b重新安装 watchman

            【讨论】:

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