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

React Native 0.63.4运行报错Unable to resolve module util解决方案咨询

问题根因

这个报错的核心原因是项目依赖的bson包默认导入了Node.js原生核心模块util,但React Native运行环境不内置这类Node服务端核心模块,升级npm后依赖版本漂移导致触发了该问题。你贴出的报错代码是bson包内部调用util相关特性的逻辑,不属于业务代码问题,无需修改业务代码。

排查步骤

  • 执行npm ls bson或yarn why bson,确认是哪个业务依赖间接安装了bson包,同时记录当前安装的bson版本号,通常mongodb、socket.io这类依赖会携带bson作为子依赖。
  • 若当前bson版本高于等于4.0.0,即可确认是版本过高带来的RN环境兼容问题。

修复方案

方案1:替换为RN适配的依赖

如果是业务代码直接引入了bson做序列化操作,直接替换为RN适配的bson-rn包,或使用对应SDK的RN专属版本(比如mongodb对应mongodb-stitch-react-native-sdk),从根源避免核心模块依赖问题。

方案2:添加util模块polyfill

  1. 安装util的前端兼容包:
npm install util --save
# 或用yarn
yarn add util
  1. 若安装后仍报错,修改项目根目录的metro.config.js,添加模块映射配置:
module.exports = {
  resolver: {
    extraNodeModules: {
      util: require.resolve('util'),
      // 后续如果有其他Node核心模块(如path、fs等)报错,可在这里对应添加polyfill映射
    }
  },
  // 其他原有配置保持不变
};

方案3:强制锁定bson低版本

如果bson是第三方依赖的子依赖,无法直接修改版本,可以在package.json中添加配置强制锁定兼容的低版本:

  • 若使用yarn,添加resolutions字段:
{
  "resolutions": {
    "bson": "^3.2.7"
  }
}
  • 若使用npm 8.3及以上版本,添加overrides字段:
{
  "overrides": {
    "bson": "^3.2.7"
  }
}

配置完成后重新安装依赖,再执行你之前的缓存清理步骤重启服务即可生效。

内容的提问来源于stack exchange,提问作者Engr.Aftab Ufaq

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:54:04