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
相关产品推荐
相关产品推荐

