Estoy tratando de crear una aplicación móvil con expo y react-native, tengo una pantalla en la que necesito generar una frase de contraseña para el usuario y estoy usando react-native-bip39 para hacerlo.
Después de instalar los siguientes paquetes: react-native-bip39, react-native-crypto y react-native-randombytes, tuve un error que dice:
No se puede resolver el
streamdel módulo
Después de investigar un poco, entendí que podía usar rn-nodeify para instalar los paquetes faltantes; sin embargo, cuando lo instalé, se generó el siguiente error y parece que no puedo encontrar una solución:
TypeError: null no es un objeto (evaluando 'RNRandomBytes.seed') en node_modules/react-native/Libraries/Core/ExceptionsManager.js:104:6 en reportException en node_modules/react-native/Libraries/Core/ExceptionsManager.js: 172:19 en handleException en node_modules/react-native/Libraries/Core/setUpErrorHandling.js:24:6 en handleError en node_modules/@react-native/polyfills/error-guard.js:49:36 en ErrorUtils.reportFatalError en node_modules /metro-runtime/src/polyfills/require.js:204:6 en guardedLoadModule en http://192.168.18.160:19000/node_modules/expo/AppEntry.bundle?platform=ios&dev=true&hot=false&strict=false&minify=false:222696 :3 en código global
Seguido de otro en la terminal:
Infracción invariable: "principal" no se ha registrado. Esto puede suceder si: Metro (el servidor de desarrollo local) se ejecuta desde la carpeta incorrecta. Compruebe si Metro se está ejecutando, deténgalo y reinícielo en el proyecto actual. No se pudo cargar un módulo debido a un error y no se llamó a
AppRegistry.registerComponent. en node_modules/react-native/Libraries/Core/ExceptionsManager.js:104:6 en reportException en node_modules/react-native/Libraries/Core/ExceptionsManager.js:172:19 en handleException en node_modules/react-native/Libraries/Core /setUpErrorHandling.js:24:6 en handleError en node_modules/@react-native/polyfills/error-guard.js:49:36 en ErrorUtils.reportFatalError
Hay un archivo shim.js generado por rn-nodeify en la carpeta raíz y package.json tiene más dependencias instaladas por la misma herramienta.
¿Cómo puedo resolver este problema?
Tuve el mismo problema y después de algunas investigaciones, esto es lo que funcionó para mí:
1- Agregar búfer y eventos Error: no se puede resolver el módulo `buffer` React Native
2- Problema inicial: cambie de react-native-randombytes a react-native-get-random-values TypeError: null no es un objeto (evaluando 'RNRandomBytes.seed') React Native
3- Solucione el problema de flujo en la base de cifrado con flujo legible agregando 'paquete de parches' https://github.com/crypto-browserify/cipher-base/issues/10
Y finalmente, así es como implementé la solución en un enlace personalizado para obtener mis palabras aleatorias:
import { useState, useEffect } from "react"; import "react-native-get-random-values"; import { entropyToMnemonic } from "bip39"; export default function UseBip39() { const [state, setState] = useState([]); useEffect(() => { async function generateWords() { const entropy = await crypto.getRandomValues(new Uint8Array(16)); setState(entropyToMnemonic(entropy).split(" ")); } generateWords(); }, []); return state; }