重现的步骤:
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
但错误是相同的
答案 0 :(得分:1)
RNRandomBytes
变量未定义,因为它应由本机模块导出,并且您尚未链接模块。
react-native link
步骤失败,因为您已使用基于Expo的create-react-native-app
初始化项目,并且不允许链接自定义本机依赖项。
如果您想使用此库(或其他具有本机依赖关系的React Native库),您需要从Expo应用程序中弹出,或者使用react-native init
初始化您的项目。
您可以在此处详细了解create-react-native-app
和react-native init
之间的区别:whats the real diff between "create-react-native-app myproject" and "react-native init myproject"。