【问题标题】:require('react-native').NativeModules.RNRandomBytes is nullrequire('react-native').NativeModules.RNRandomBytes 为空
【发布时间】:2018-10-21 04:32:00
【问题描述】:

在 npm 库 react-native-randombytes 的 index.js 中有一行:let RNRandomBytes = require('react-native').NativeModules.RNRandomBytes。在init() 方法中,有一个代码块包含在一个if 语句if (RNRandomBytes.seed) { ... } 中,这就是代码中断的地方,因为RNRandomBytes 是未定义的。

在调试中,我发现NativeModules 有很多与之关联的库,只是没有RNRandomBytes。我在 Windows 10 环境中,通过 rn-nodeify 使用 node.js 和 react-native。我已经完成了 react-native-crypto 步骤,包括 react-native link 步骤。我猜我遗漏了一些东西,有没有办法用RNRandomBytes 填充NativeModules

【问题讨论】:

    标签: typescript react-native npm


    【解决方案1】:

    就我而言,我安装了 react-native-randombytes。也许你像我一样做了react-native linkreact-native link react-native-randombytes。我打开了 podfile,它确实为我们提供了链接。但是,如果您打开 pod.lock 并查找它,它并没有为我们自动安装。我去了ios文件夹和pod install,它终于可以工作了。这个问题浪费了我大约 5 天时间。

    【讨论】:

      【解决方案2】:

      这就是在本地端注册本地模块时可以找到它们的地方。这里的问题是该包目前没有本机 Windows 实现。

      更新:我仔细检查了,结果发现有一个开放的 PR 可以添加 Windows UWP 应用程序支持,试试那个 fork: npm i --save https://github.com/newomble/react-native-randombytes

      【讨论】:

        【解决方案3】:

        尝试重建您的 ios/android 代码。

        如果您安装包含本机代码的新软件包,您需要重新构建本机代码。 react-native中的热重载只是加载js和assets文件。

        【讨论】:

        • 我不是为 ios 或 android 构建它,我在 windows 环境中。也就是说,我技术上是有index.ios.js和index.android.js的,但是我没有用,我只关注index.windows.js。我的开发过程包括转译、调用 react-native 包,然后运行。我是否缺少一些步骤来完全重建事物?
        猜你喜欢
        • 2018-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-12
        • 2019-02-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多