Ошибка: попытка импортировать модуль стандартной библиотеки Node "crypto".Это не удалось - PullRequest
0 голосов
/ 24 апреля 2019

Я собирался использовать ethereumjs-wallet.Но я решил использовать ethereumjs-wallet-react-native, потому что это для сети.Если вы посмотрите на ссылку , там написано import два модуля.Поэтому я взял два модуля и попытался import их, но возникла проблема.

код, вызывающий ошибку:

import { asyncRandomBytes } from 'react-native-secure-randombytes'
import safeCrypto from 'react-native-safe-crypto'

window.randomBytes = asyncRandomBytes
window.scryptsy = safeCrypto.scrypt

Сообщение об ошибке:

Не удалось разрешить модуль «act-native-secure-randombytes »

Я хотел решить эту проблему, но не смог ее решить, поэтому решил пойти в обход.

Устранено из-за ошибки Код:

import safeCrypto from "react-native-fast-crypto";
const { RNRandomBytes } = NativeModules;

window.randomBytes = RNRandomBytes.randomBytes;
window.scryptsy = safeCrypto.scrypt;

Это может вызвать проблемы позже, но это уже решено.Однако возникла другая проблема, когда мы вызвали и выполнили ethereumjs-wallet-react-native.

errormessage:

Пакет в "node_modules / ethereumjs-wallet-реагировать-native / index.js"попытался импортировать модуль стандартной библиотеки Node "crypto".Не удалось, потому что React Native не включает стандартную библиотеку Node.Читайте больше на https://docs.expo.io/versions/latest/introduction/faq/#can-i-use-nodejs-packages-with-expo

Итак, я скачал crypto-browserify, но это не сработало.

Код, который пытался разрешить

import safeCrypto from "react-native-fast-crypto";
const { RNRandomBytes } = NativeModules;
import Wallet from "ethereumjs-wallet-react-native";
var crypto = require("crypto-browserify");

window.randomBytes = RNRandomBytes.randomBytes;
window.scryptsy = safeCrypto.scrypt;
...
 async componentDidMount() {
    const wallet = await Wallet.generate();
  }

этоis package.json:

  "dependencies": {
    "crypto-browserify": "^3.12.0",
    "ethereumjs-wallet-react-native": "^0.6.7",
    "expo": "^32.0.0",
    "expokit": "32.1.1",
    "react": "16.5.0",
    "react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz",
    "react-native-fast-crypto": "^1.8.1",
    "react-native-randombytes": "^3.5.2"
  },
  "devDependencies": {
    "babel-preset-expo": "^5.0.0"
  },

Код для "ethereumjs-wallet-реагировать-native / index.js" находится на ссылке в моей статье.

Пожалуйста, помоги нам.Заранее спасибо.

1 Ответ

0 голосов
/ 09 мая 2019

react-native-randombytes были Re-link.

и

меня использовали import crypto from "crypto";

Воссоздание успешного кода

import crypto from "crypto";
import safeCrypto from "react-native-fast-crypto";
import { asyncRandomBytes } from "react-native-secure-randombytes";
...
window.randomBytes = asyncRandomBytes;
window.scryptsy = safeCrypto.scrypt;
...