Как устранить ошибку «Null не является объектом» при оценке RNRandomBytes.seed

Я пытаюсь создать мобильное приложение с помощью 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 имеет больше зависимостей, установленных тем же инструментом.

Как я могу решить эту проблему?

Глупый вопрос, но пробовали ли вы делать так, как описано во втором сообщении об ошибке?

Victor Svensson 06.05.2022 16:35

да, но не повезло :(

EL-Mehdi Loukach 06.05.2022 17:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У меня была та же проблема, и после некоторых исследований это сработало для меня:

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;
}

Другие вопросы по теме