rn-nodeify为React Native

时间:2018-02-07 18:08:51

标签: ios react-native cryptography

重现的步骤:

create-react-native-app proj && cd proj && npm i

安装使用加密的软件包。执行https://www.npmjs.com/package/react-native-crypto中列出的步骤:

npm i -S react-native-crypto && npm i -S react-native-randombytes
react-native link react-native-randombytes

警告反应原生链接失败,但是在下面的黑客加密依赖不再是问题之后:

npm i --save-dev tradle/rn-nodeify
./node_modules/.bin/rn-nodeify --hack --install

import './shim.js'添加到App.js

yarn run ios

遇到问题:https://github.com/mvayngrib/react-native-randombytes/issues/13

  

undefined不是对象(评估'RNRandomBytes.seed')

由于某些已使用的程序包限制,我无法更新npm和节点

MacOS 10.12,Node 8.0.0,npm 5.0

编辑:

RNRandomBytes初始化为let RNRandomBytes = require('react-native').NativeModules.RNRandomBytes

init是从twitter nacl导入的react-native-crypto导入的react-native-randombytes中访问RNRandomBytes的第一个地方

EDIT2:通过react-native init创建项目后,链接阶段成功完成:

rnpm-install info Linking react-native-randombytes android dependency 
rnpm-install info Android module react-native-randombytes has been successfully linked 
rnpm-install info Linking react-native-randombytes ios dependency 
rnpm-install info iOS module react-native-randombytes has been successfully linked 
此示例项目的

import './shim.js'位于index.js而不是App.js

但错误是相同的

1 个答案:

答案 0 :(得分:1)

RNRandomBytes变量未定义,因为它应由本机模块导出,并且您尚未链接模块。

react-native link步骤失败,因为您已使用基于Expo的create-react-native-app初始化项目,并且不允许链接自定义本机依赖项。

如果您想使用此库(或其他具有本机依赖关系的React Native库),您需要从Expo应用程序中弹出,或者使用react-native init初始化您的项目。

您可以在此处详细了解create-react-native-appreact-native init之间的区别:whats the real diff between "create-react-native-app myproject" and "react-native init myproject"