2017-03-07 80 views
3

我正尝试将Ethereum web3.js library导入到React Native项目中。React-Native无法导入库

我跟着作出反应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?

+0

您只需要链接使用本机代码的库。与HTML/CSS的软件包也不起作用,但这似乎并没有。尝试关闭您的打包程序并重新运行您的应用程序。 –

回答

-2

试试这个导入库:

var Web3 = require('web3');

+0

**修正:** https://github.com/ethereum/web3.js/issues/576 编辑以下文件 \t /node_modules/bignumber.js/bignumber.js 编辑如下: \t -if(!crypto)try {crypto = require('crypto'); } catch(e){} \t + if(!crypto)try {crypto = require('crypto-js'); } catch(e){} \t ** Web3版本:0.18.2 ** – Vivek

-2

修正: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

0

我能够使它在web3版本0.x上工作,并开放源代码创建babel-preset-react-native-web3的解决方案,以便它可以开箱即用,因为它可能不被认为是100%安全的,因为它用于创建帐户幕后使用Math.Random()

欲了解更多信息,请参阅以下sample app使用web3 version 0.20.0,react 16expo

希望有帮助,