【问题标题】:rn-nodeify for the React NativeReact Native 的 rn-nodeify
【发布时间】:2018-02-08 03:03:07
【问题描述】:

重现步骤:

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

收到 react-native 链接失败的警告,但是在以下 hack 之后,加密依赖不再是问题:

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

在 App.js 中添加import './shim.js'

yarn run ios

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

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

由于某些使用的包限制,我无法更新 npm 和 node

MacOS 10.12,节点 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 中

但错误是一样的

【问题讨论】:

    标签: ios react-native cryptography


    【解决方案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"。

    【讨论】:

    • 感谢您非常详细的解释!我现在会检查它是否适合我
    • 我用react-native init 创建了一个示例项目(链接不再失败)并将shim.js 添加到index.js,但错误仍然存​​在。你有什么建议吗?
    • 更新。我在另一台 Mac 上试了试,效果很好。看起来节点安装在这个上被破坏了。再次感谢您,我真的很感激!
    • 我也面临同样的错误,但我想在我的机器上解决它我没有另一台机器
    • @jevakallio 有没有办法在 expo 中使用节点标准库(如“crypto”)而无需弹出?
    猜你喜欢
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多