Я пытаюсь создать мобильное приложение с помощью expo и react-native, у меня есть экран, на котором мне нужно сгенерировать кодовую фразу для пользователя, и для этого я использую react-native-bip39.
После установки следующих пакетов: react-native-bip39, react-native-crypto и react-native-randombytes у меня возникла ошибка:
Unable to resolve module
stream
Покопавшись, я понял, что могу использовать rn-nodeify для установки отсутствующих пакетов, однако, когда я его установил, возникла следующая ошибка, и я не могу найти для нее решение:
TypeError: null is not an object (evaluating 'RNRandomBytes.seed') at node_modules/react-native/Libraries/Core/ExceptionsManager.js:104:6 in reportException at node_modules/react-native/Libraries/Core/ExceptionsManager.js:172:19 in handleException at node_modules/react-native/Libraries/Core/setUpErrorHandling.js:24:6 in handleError at node_modules/@react-native/polyfills/error-guard.js:49:36 in ErrorUtils.reportFatalError at node_modules/metro-runtime/src/polyfills/require.js:204:6 in guardedLoadModule at http://192.168.18.160:19000/node_modules/expo/AppEntry.bundle?platform=ios&dev=true&hot=false&strict=false&minify=false:222696:3 in global code
За ним следует еще один на терминале:
Invariant Violation: "main" has not been registered. This can happen if: Metro (the local dev server) is run from the wrong folder. Check if Metro is running, stop it and restart it in the current project. A module failed to load due to an error and
AppRegistry.registerComponent
wasn't called. at node_modules/react-native/Libraries/Core/ExceptionsManager.js:104:6 in reportException at node_modules/react-native/Libraries/Core/ExceptionsManager.js:172:19 in handleException at node_modules/react-native/Libraries/Core/setUpErrorHandling.js:24:6 in handleError at node_modules/@react-native/polyfills/error-guard.js:49:36 in ErrorUtils.reportFatalError
В корневой папке есть файл shim.js
, сгенерированный rn-nodeify, а package.json имеет больше зависимостей, установленных тем же инструментом.
Как я могу решить эту проблему?
да, но не повезло :(
У меня была та же проблема, и после некоторых исследований это сработало для меня:
1- Добавление буфера и событий Ошибка: невозможно разрешить модуль `buffer` React Native
2- Проблема с семенами: переключиться с react-native-randombytes на react-native-get-random-values TypeError: null не является объектом (оценка «RNRandomBytes.seed») React Native
3- Исправьте проблему с потоком в базе шифров с читаемым потоком, добавив «пакет исправлений». https://github.com/crypto-browserify/cipher-base/issues/10
И, наконец, вот как я реализовал решение в пользовательском хуке, чтобы получить мои случайные слова:
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;
}
Глупый вопрос, но пробовали ли вы делать так, как описано во втором сообщении об ошибке?