You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决React Native启动时Watchman报RootResolveError错误

问题根因

报错核心是path "." must be absolute,说明watchman被jest-haste-map调用时收到的项目根路径参数是相对路径.,没拿到合法的绝对路径,和watchman是否启动、.watchmanconfig是否存在无关。你之前在项目目录执行watchman watch .能得到正常响应,是因为直接调用watchman命令时它会自动把相对路径转换为绝对路径,但react-native 0.64版本内置的jest-haste-map调用watchman时不会做这个路径转换,才会触发报错,常规的清缓存、重装操作命中不了这个问题点。

解决方案(按优先级尝试)
  • 先排查路径问题:在项目目录下执行pwd,确认输出的是项目真实的绝对路径,不要通过软链目录、相对路径跳转(比如cd ../project这类写法)进入项目。不要用IDE内置终端启动服务,打开系统终端,用绝对路径cd进项目目录(例:cd /Users/xxx/your-rn-project),再执行react-native start。
  • 修复watchman目录权限:如果之前执行watchman清理命令时加过sudo,会导致watchman运行目录权限归属错乱,直接执行sudo chown -R $(whoami) /usr/local/var/run/watchman把目录权限改回当前用户,再重新启动watchman服务。
  • 手动配置全磁盘访问权限:不用等权限列表自动加载出watchman选项,打开「系统偏好设置>安全性与隐私>完全磁盘访问权限」,点左下角锁图标输入密码解锁,再打开访达按Shift+Command+G,输入/usr/local/bin/跳转,找到watchman可执行文件,直接拖进权限列表,勾选授权后重启终端生效。
  • 排查shell别名配置:打开当前使用的shell配置文件(zsh对应~/.zshrc,bash对应~/.bash_profile),检查是否给watchman、react-native、node命令配过涉及路径替换的alias,有的话先注释掉,执行source重载配置后重启终端再试。
  • 版本兼容问题:你当前用的watchman 2022.06.06.00版本在macOS 12.4上存在相对路径解析的已知bug,上述方案都无效的话,直接降级watchman到2022.03.21.00版本,重新执行清理命令后启动项目即可。
  • 临时兜底方案:如果需要快速启动服务调试,可以在启动命令中加参数临时禁用watchman:react-native start --no-watchman,会自动切换到node crawler做文件监听,不影响本地调试。

内容的提问来源于stack exchange,提问作者Matt Croak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 17:36:16