Newer version available. Please see 5.1.1
How To Add bitcoinjs-lib Version 5.0.5 To A React Native Project
Add/Link the following dependencies:
yarn add [email protected] react-native-randombytes buffer-reverse buffer@5
yarn add --dev rn-nodeify
react-native link react-native-randombytes
- Add the following postinstall to your script in package.json:
"postinstall": "rn-nodeify --install buffer,stream,assert,events,crypto,vm --hack && cd node_modules/bs58 && yarn add [email protected] && cd ../../"
Install any remaining dependencies and run postinstall.
NOTE: (If you receive an error about "shim.js" not existing just run yarn install
again):
-
yarn install
-
Add the following to shim.js:
if (typeof Buffer.prototype.reverse === 'undefined') {
var bufferReverse = require('buffer-reverse');
Buffer.prototype.reverse = function () {
return bufferReverse(this);
};
}
- Uncomment
require('crypto')
at the bottom of "shim.js". Or addrequire('crypto')
to the bottom of "shim.js" if it doesn't exist.
Resolve Item In ecpair.js
- Open ecpair.js in .../bitcoinjs-lib/src/ecpair.js and replace
const randomBytes = require('randombytes')
with the following:import { randomBytes } from 'react-native-randombytes'
To test if everything is working as expected place the following in render:
import "./shim";
const bitcoin = require("bitcoinjs-lib");
const keyPair = bitcoin.ECPair.makeRandom();
const { address } = bitcoin.payments.p2pkh({ pubkey: keyPair.publicKey });
console.log(address);
any way to make this work on expo?
I get:
undefined is not an object (evaluating 'RNRandomBytes.seed')
I do not want to eject the project
thanks!