当前位置: 首页 > article >正文

React Native 项目 Error: EMFILE: too many open files, watch

硬件:MacBook Pro (Retina, 13-inch, Mid 2014)
OS版本:MacOS BigSur 11.7.10 (20G1427)
更新: 删除modules的方法会有反弹,最后还是手动安装了预编译版本的watchman。

React Native 项目运行npm run web,出现如下错误:

Your macOS system limit does not allow enough watchers for Metro, install Watchman instead. Learn more: https://facebook.github.io/watchman/docs/install
Error: EMFILE: too many open files, watch

尝试了如下方案:

  1. 尝试 npm install watchman
    提示npm warn deprecated watchman@1.0.0: Package no longer supported. Contact support@npmjs.com for more info.

  2. 尝试brew install watchman
    无法安装,提示我的系统版本太老
    在这里插入图片描述

  3. 尝试修改文件打开数量(需要进入恢复模式关闭SIP: csrutil disable ):
    sudo launchctl limit maxfiles 5000000 5000000
    通过launchctl limit maxfiles查看已经改好了,但是仍然提示同样错误。

  4. 删除模块:

rm -rf node_modules/
npm install

然后再次npm run web,终于可以了:
在这里插入图片描述
但是后面调试过程中安装了别的模块之后,这个问题又回来了。

  1. 手动安装watchman
    点击官方链接下载macOS的prebuild版本Release v2023.05.01.00 · facebook/watchman(后面已经没有新版本了)
    然后复制到/usr/local/Cellar/,
cd /usr/local/Cellar/
unzip watchman-v2023.05.01.00-macos.zip
mv watchman-v2023.05.01.00 watchman
cp /usr/local/Cellar/watchman/lib/*.*  /usr/local/lib
brew link watchman

此时如果运行watchman --version报错找不到,那就手动创建链接:

ln -s /usr/local/Cellar/watchman/*/bin/watchman /usr/local/bin/watchman

然后再次运行watchman --version检查。
然后watchman config(其实没有这个命令),会提示:

watchman config   
2025-01-05T11:12:13,985: [] while computing sockname: failed to create /usr/local/var/run/watchman/xxx-state: Permission denied

其中xxx是我的系统用户名。
所以需要这样:

sudo spctl --master-disable
sudo chown -R $(whoami) /usr/local/var/run/watchman

然后再次运行watchman config,会提示没这个命令

watchman config                                    
{
    "version": "20230430.125247.0",
    "error": "watchman::CommandValidationError: failed to validate command: unknown command config"
}

但是watchman可以正常工作了,npx expo start也没有文件打开太多的错误了。
可以使用watchman debug-status命令查看watchman状态:

watchman debug-status
ROOTS
-----
/Users/simonliu/Documents/AI/AICoding/cursor/projects/rn1
  - fstype: apfs
  - watcher: fsevents
  - uptime: 7709 s
  - crawl_status: crawl completed 7707330ms ago, and took 1864ms
  - done_initial: true

CLIENTS
-------
57960: 'watchman' 'debug-status'
  - since: 2025-01-05 13:24:42
  - state: dispatching command

54201: 'node' '/Users/simonliu/Documents/AI/AICoding/cursor/projects/rn1/node_modules/.bin/expo' 'start' '--reset-cache'
  - since: 2025-01-05 11:16:17
  - state: waiting for request

参考文献:

  1. ios - React Native Error: EMFILE: too many open files, watch - Stack Overflow
  2. MacOS binaries missing · Issue #1190 · facebook/watchman

http://www.kler.cn/a/473490.html

相关文章:

  • 递归构建树菜单节点
  • 自动驾驶控制与规划——Project 6: A* Route Planning
  • OpenAI CEO 奥特曼发长文《反思》
  • Linux下文件重定向
  • Jenkins内修改allure报告名称
  • 【SQL】掌握SQL查询技巧:数据分组与排序
  • Linux 环境(Ubuntu)部署 Hadoop 环境
  • 【开源免费】基于SpringBoot+Vue.JS教学辅助平台(JAVA毕业设计)
  • C#语言的函数实现
  • WebSocket 安全实践:从认证到加密
  • 常见框架漏洞常见中间件漏洞
  • 【工具】HTML自动识别用户正在讲话 以及停止讲话
  • CVPR 2024 3D Point Cloud(点云处理)方向总汇
  • ChatGPT网络配置问题方案
  • Golang的网络安全漏洞检测
  • 花生好坏缺陷识别数据集,7262张图片,支持yolo,coco json,pasical voc xml格式的标注,识别准确率在95.7%
  • Vscode 安装、配置及插件
  • Go语言的 的设计模式(Design Patterns)核心知识
  • 内网穿透-natapp
  • 前端 图片上鼠标画矩形框,标注文字,任意删除
  • 软考教材重点内容 信息安全工程师 第13章 网络安全漏洞防护技术原理与应用
  • 入侵检测技术原理与应用
  • vue elementui 大文件进度条下载
  • Sql 创建用户
  • 语义分割数据集介绍——Camvid和Cityscapes介绍
  • 数据结构与算法之二叉树: LeetCode 107. 二叉树的层序遍历 II (Ts版)