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

在Yarn Monorepo中配置React Native时遭遇打包器错误求助

解决Yarn Workspaces Monorepo中React Native无法解析根node_modules依赖的问题

我之前在Yarn Workspaces的Monorepo里配置React Native项目时,也碰到过几乎一模一样的问题。结合你的配置和报错信息,咱们来拆解下问题原因和解决办法:

问题原因

  1. Nohoist规则的干扰:你在根目录package.json里把**/react-native/**加入了nohoist列表,这会强制React Native及其关联依赖安装在子项目(mobile-app)的node_modules中,但bugsnag-react-native被hoist到了根目录的node_modules。Metro打包器默认优先查找当前项目的node_modules,nohoist规则打乱了它的向上遍历逻辑,导致找不到根目录的依赖。
  2. Metro的解析逻辑限制:React Native的Metro打包器和Node.js的模块解析逻辑不同,它不会自动把根目录的node_modules纳入查找路径,在Monorepo场景下需要手动配置。
  3. Yarn 1.x版本的已知bug:你使用的Yarn 1.19.0存在一些Workspaces相关的路径解析问题,可能加剧了这个报错。

解决办法

1. 调整Nohoist配置,兼容bugsnag-react-native

修改根目录package.json的nohoist规则,给bugsnag-react-native添加例外,让它能被正确识别:

{
  "name": "mono-repo",
  "workspaces": {
    "packages": [ "web-app", "utils", "mobile-app" ],
    "nohoist": [
      "**/jest",
      "**/jest/**",
      "**/mocha",
      "**/mocha/**",
      "**/react-native",
      "**/react-native/**",
      "!**/bugsnag-react-native",
      "!**/bugsnag-react-native/**"
    ]
  }
}

修改后执行yarn install重新安装依赖。

2. 配置Metro打包器,添加根目录依赖路径

在mobile-app项目根目录创建或修改metro.config.js,让Metro明确去根目录的node_modules查找依赖:

const path = require('path');

module.exports = {
  resolver: {
    // 代理所有模块请求到根目录node_modules
    extraNodeModules: new Proxy({}, {
      get: (target, moduleName) => 
        path.join(__dirname, '../node_modules', moduleName),
    }),
  },
  // 指定当前项目根目录
  projectRoot: path.resolve(__dirname),
  // 让Metro监听根目录文件变化,适配Monorepo依赖更新
  watchFolders: [path.resolve(__dirname, '../')],
};

3. 确保子项目声明了依赖

检查mobile-app/package.json的dependencies里是否包含bugsnag-react-native,即使根目录已经安装,子项目也需要明确声明依赖,Yarn Workspaces会自动关联根目录的包,避免解析异常。

4. 升级Yarn到1.x最新稳定版

Yarn 1.19.0存在一些Workspaces的已知问题,建议升级到1.x分支的最新版本(比如1.22.19),执行命令:

yarn set version 1.22.19

升级后重新执行yarn install,很多路径解析的小问题会被修复。

做完这些步骤后,重新运行yarn run-ios,应该就能正常解析bugsnag-react-native了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:11:14