React-Native 无法导入库

React-Native cannot import library

我正在尝试将以太坊 web3.js library 导入到 React Native 项目中。

我已经按照 React Linking Libraries 说明安装了 web3.js 包并将其与命令链接:

$ npm install web3 --save
$ react-native link

我的 index.ios.js 文件如下所示:

import { default as Web3 } from 'web3';

import React, { Component } from 'react';
import { AppRegistry, Text } from 'react-native';

class ReactProject extends Component {
  render() {
    return (
      <Text>Hello world!</Text>
    );
  }
}

AppRegistry.registerComponent('ReactProject', () => ReactProject);

当我 运行 应用程序 {"type":"InternalError","message":"react-packager has encountered an internal error, please check your terminal error output for more details"} 时,我在模拟器中收到的错误消息不是很有用,因为终端只显示相同的消息。

如何将这样的库导入 React Native?

试试这个来导入库:

var Web3 = require('web3');

固定: https://github.com/ethereum/web3.js/issues/576

编辑以下文件

/node_modules/bignumber.js/bignumber.js

编辑如下:

-if ( !crypto ) try { crypto = require('crypto'); } catch (e) {}
+if ( !crypto ) try { crypto = require('crypto-js'); } catch (e) {} 

Web3 版本:0.18.2

我创建了一个分步简单指南,介绍如何使用 Create React Native App 设置 web3.js 1.0.0-beta.24,而不修改 node_modules:

https://gist.github.com/dougbacelar/29e60920d8fa1982535247563eb63766

我能够让它在 web3 版本 0.x 上运行,并开源了创建 babel-preset-react-native-web3 的解决方案,这样它就可以开箱即用,如果使用它可能不会被认为是 100% 安全的用于创建帐户,因为它在幕后使用 Math.Random()

有关详细信息,请参阅以下 sample app 使用 web3 version 0.20.0react 16expo

希望对您有所帮助,