import React, {useEffect, useState} from 'react';
import {SafeAreaView, StyleSheet, Text, View} from 'react-native';
import './globals.js';
import {Libp2p, createLibp2p} from 'libp2p';
import {webSockets} from '@libp2p/websockets';
import {bootstrap} from '@libp2p/bootstrap';
import {noise} from '@chainsafe/libp2p-noise';
import {yamux} from '@chainsafe/libp2p-yamux';
import {Identify, identify} from '@libp2p/identify';
import {circuitRelayTransport} from '@libp2p/circuit-relay-v2';
// import {tcp} from '@libp2p/tcp';
import * as filters from '@libp2p/websockets/filters';
import type {Multiaddr} from '@multiformats/multiaddr';
import type {PeerId} from '@libp2p/interface';
import debug from 'debug';
Description
I use LibP2P on React Native CLI.
I got error when create a libp2p node. This error occurred because of
tcp()
:Versions
MacBook Air:
React Native:
Libp2p:
Steps to reproduce
const config = { resolver: { unstable_enablePackageExports: true, extraNodeModules: { crypto: require.resolve('react-native-quick-crypto'), stream: require.resolve('stream-browserify'), net: require.resolve('react-native-tcp-socket'), os: require.resolve('os-browserify'), path: require.resolve('path-browserify'), }, }, };
module.exports = mergeConfig(getDefaultConfig(__dirname), config);
Enable modern JS features:
Install necessary dependencies
Create a libp2p node on
App.tsx
:debug.enable('libp2p:,:trace');
function App(): React.JSX.Element { const [libp2p, setLibp2p] = useState< Libp2p<{ identify: Identify; }>
useEffect(() => { async function getLibp2p() { const node = await createLibp2p({ transports: [ circuitRelayTransport({ discoverRelays: 1, }), webSockets({ filter: filters.all, }), // tcp(), ], connectionEncryption: [noise()], streamMuxers: [yamux()], peerDiscovery: [ bootstrap({ list: [ '/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN', '/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa', '/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb', '/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt', '/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ', '/ip4/127.0.0.1/tcp/54383/ws/p2p/12D3KooWPjB7XzTv1hviVwPtx4qzr864NeFGDT6aFBDVD76fAMpK', ], }), ], services: { identify: identify(), }, });
}, []);
return (
); }
const styles = StyleSheet.create({ container: { alignItems: 'center', }, header: { marginTop: 40, marginBottom: 20, fontSize: 20, fontWeight: 'bold', }, prefix: {fontWeight: 'bold', fontSize: 18}, });
export default App;