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

RNRandomBytes未在NativeModules中加载,如何添加该模块?

解决React Native Windows中RNRandomBytes未在NativeModules中注册的问题

我之前在Windows 10环境下配置react-native-crypto + rn-nodeify时也碰到过一模一样的问题,RNRandomBytes找不到导致init方法报错,其实核心是react-native link在Windows平台上有时候无法自动完成原生模块的注册,给你一步步的解决步骤:

1. 重新确认依赖安装

先确保react-native-randombytes已经正确安装到项目中,有时候自动安装可能出问题,手动执行一遍:

npm install react-native-randombytes --save
# 或者用yarn的话
yarn add react-native-randombytes

2. 手动配置Windows原生项目

这是解决问题的关键,因为Windows平台的原生模块注册无法完全自动完成:

  • 打开你的React Native项目根目录下的windows/{你的项目名}.sln文件(用Visual Studio打开)
  • 在解决方案资源管理器中,右键点击你的主项目 -> 添加 -> 现有项
  • 找到node_modules/react-native-randombytes/windows/RNRandomBytes/RNRandomBytes.vcxproj,选中并添加到项目中
  • 右键点击主项目 -> 生成依赖项 -> 项目依赖项,勾选RNRandomBytes,确保构建顺序正确
  • 打开windows/{你的项目名}/MainPage.cs,找到protected override List<IReactPackage> Packages方法,在返回的列表中添加RNRandomBytes的Package:
    protected override List<IReactPackage> Packages => new List<IReactPackage>
    {
        new MainReactPackage(),
        // 添加这一行
        new RNRandomBytes.RNRandomBytesPackage()
    };
    

3. 重新生成rn-nodeify的shim文件

确保node.js的shim配置正确指向react-native-randombytes,执行:

rn-nodeify --install crypto,randombytes --hack

执行完成后,检查项目根目录的shim.js文件,确认里面有global.randomBytes = require('react-native-randombytes').randomBytes这类的配置。

4. 清理缓存并重启项目

  • 关闭正在运行的Metro服务器,执行缓存重置命令:
    npx react-native start --reset-cache
    
  • 删除Windows项目的构建缓存:找到windows/{你的项目名}/bin和windows/{你的项目名}/obj文件夹,直接删除
  • 重新启动Windows项目:可以通过Visual Studio点击生成并运行,或者执行npx react-native run-windows

5. 最后检查

启动项目后,你可以在代码里临时加一行调试代码确认RNRandomBytes是否存在:

import { NativeModules } from 'react-native';
console.log('NativeModules:', NativeModules);

如果能在控制台看到RNRandomBytes,说明问题已经解决了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:07:23