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

react-native-webview打补丁本地正常CI环境报错如何解决

问题诱因
  • 补丁方案混用冲突:你在package.json中使用了Yarn 3+(Berry版本)专属的patch:协议写法,但补丁文件是传统patch-package工具生成的格式,两者的路径解析规则完全不同。patch-package生成的diff路径是相对于依赖包自身根目录的,而Yarn内置的patch:协议默认要求路径相对于项目根目录,直接使用就会出现匹配不到文件的报错。
  • 路径修改错误:你手动给补丁路径加上node_modules/react-native-webview前缀后,Yarn应用补丁时会自动在依赖包的根目录下查找路径,拼接后就出现了node_modules/react-native-webview/node_modules/react-native-webview/...的重复路径,触发文件不存在的报错。
  • CI缓存干扰:CI环境可能缓存了未打补丁的依赖版本、损坏的补丁缓存,导致每次安装都直接读取旧的异常内容,补丁无法正常应用。
解决方法

根据你的技术栈选择任意一种统一的补丁方案即可:

方案1:使用Yarn 3+内置补丁功能(适配当前patch:协议写法)

  1. 将补丁文件的路径恢复为原始格式,不需要加任何前缀:
diff --git a/apple/RNCWebView.m b/apple/RNCWebView.m
index ff9ff9e0..dfea91a8 100644
--- a/apple/RNCWebView.m
+++ b/apple/RNCWebView.m
@@ -194,12 +194,18 @@ - (void)dealloc
...
  1. 确认package.json中补丁的相对路径正确:如果补丁存放在项目根目录下的scripts/patches/文件夹,保持原有写法即可,如果是monorepo子包引用,需要调整为相对于项目根目录的正确相对路径。
  2. 本地执行yarn install验证补丁应用正常后,提交修改后的补丁文件、yarn.lock到代码仓库。
  3. 清空CI环境的依赖缓存,重新执行部署流程即可。

方案2:使用传统patch-package工具

  1. 将package.json中react-native-webview的依赖版本改回原版,移除patch:前缀:
"dependencies": {
  "react-native-webview": "11.0.3",
  ...
}
  1. 确保补丁文件存放在patch-package默认读取的patches/根目录,或者在package.json中配置补丁路径指向scripts/patches。
  2. 修改CI的执行脚本,在yarn install之后增加执行yarn patch-package的步骤,确保依赖安装完成后自动应用补丁。
  3. 提交所有修改后清空CI缓存,重新执行部署流程即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:09:00