我正在使用 React Native 开发一个移动应用程序,其中涉及与 web3.js
的交互
问题是 RN 不支持核心 Node.js 模块,所以我不得不安装
npm i --save react-native-crypto
npm i --save react-native-randombytes
react-native link react-native-randombytes
npm i --save-dev rn-nodeify@latest
./node_modules/.bin/rn-nodeify --hack --install
任何线索是什么问题或者如何解决它?
答案 0 :(得分:1)
好像是 react-native-randombytes 库的安装问题。
您没有考虑使用提供相同 API 的不同的、更流行的库吗?
npm 说 react-native-randombytes 每周有 19,294 次下载。 另一个名为 react-native-get-random-values 的库(每周下载 481,572 次)几乎可以保证正常工作(因为建议与 - uuid 之类的软件包结合使用)。此库的 npm 链接是 here。
通过查看上面提到的两个库的源代码,两者都使用相同的 Android API,由 SecureRandom 支持,所以我希望 iOS 上也有相似之处。
react-native-get-random-values(链接 here):
@ReactMethod(isBlockingSynchronousMethod = true)
public String getRandomBase64(int byteLength) throws NoSuchAlgorithmException {
byte[] data = new byte[byteLength];
SecureRandom random = new SecureRandom();
random.nextBytes(data);
return Base64.encodeToString(data, Base64.NO_WRAP);
}
react-native-randombytes 库 - 链接 here:
@ReactMethod
public void randomBytes(int size, Callback success) {
success.invoke(null, getRandomBytes(size));
}
private String getRandomBytes(int size) {
SecureRandom sr = new SecureRandom();
byte[] output = new byte[size];
sr.nextBytes(output);
return Base64.encodeToString(output, Base64.NO_WRAP);
}