React Native (and ilk)

The React Native框架已经变得相当流行并且具有许多流行的分支, 例如Expo.

React Native是基于JavaScriptCore (WebKit的部分) 并且不使用Node.js或常见的Web和DOM API。因此,丢失了许多正常的网络环境或者Node.js实例所能提供的操作。

由于这个原因, 这里提供一个Shims模块来填补这个漏洞

安装

要在React Native中使用ether, 你必须要为所需且缺少的功能提供ether shims,或者使用ethers.js shim.

强烈建议您查看下面的security部分获得关于安装可能影响你的应用程序安全的软件包

安装软件包后, 你可能需要重启你的软件包和company.

Installing
/home/ricmoo/my-react-project> npm install @ethersproject/shims --save
Importing
// Pull in the shims (BEFORE importing ethers) import "@ethersproject/shims" // Import the ethers library import { ethers } from "ethers";

安全

React Native环境不包含用于计算随机私钥的安全随机源。这可能会导致其他人可能猜到的私钥,从而导致资金被盗和资产被操纵。

由于这个原因,强烈建议也安装React Native get-random-values,它必须被包含shims的前面。 如果它工作正常,您应该不会在控制台中收到任何关于丢失安全随机源的警告。

Importing with Secure Random Sources
// 导入crypto getRandomValues shim(在shims**之前**) import "react-native-get-random-values" // 导入ethers shims (在导入ethers**之前**) import "@ethersproject/shims" // 导入ethers库 import { ethers } from "ethers";