我正在尝试将以太坊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');
我创建了一个关于如何使用web3.js 1.0.0-beta.24
设置Create React Native App
的逐步简单指南,而不修改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.0
,react 16
和expo
。
希望有所帮助,
修正: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