# @react-native-module/node-libs-react-native

> Node core modules for React Native

Latest version **1.4.1** (published 2022-08-04) · MIT license · 0 weekly downloads

## Install

```sh
npm install @react-native-module/node-libs-react-native
pnpm add @react-native-module/node-libs-react-native
yarn add @react-native-module/node-libs-react-native
bun add @react-native-module/node-libs-react-native
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.4.1 |
| Published | 2022-08-04 |
| First published | 2022-07-20 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 23 |
| Unpacked size | 17.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | sacru2red |
| Maintainers | sacru2red |

## Links

- npm: https://www.npmjs.com/package/@react-native-module/node-libs-react-native
- Repository: https://github.com/react-native-module/node-libs-react-native
- Issues: https://github.com/react-native-module/node-libs-react-native/issues
- npm.io page: https://npm.io/package/@react-native-module/node-libs-react-native

## Dependencies (23)

- [url](https://npm.io/package/url.md) ^0.11.0
- [util](https://npm.io/package/util.md) ^0.10.3
- [assert](https://npm.io/package/assert.md) ^1.4.1
- [buffer](https://npm.io/package/buffer.md) ^6.0.3
- [events](https://npm.io/package/events.md) ^1.0.0
- [process](https://npm.io/package/process.md) ^0.11.0
- [punycode](https://npm.io/package/punycode.md) ^2.1.0
- [js-base64](https://npm.io/package/js-base64.md) ^3.7.2
- [stream-http](https://npm.io/package/stream-http.md) ^2.3.1
- [os-browserify](https://npm.io/package/os-browserify.md) ^0.3.0
- [domain-browser](https://npm.io/package/domain-browser.md) ^1.1.1
- [string_decoder](https://npm.io/package/string_decoder.md) ^1.0.3
- [tty-browserify](https://npm.io/package/tty-browserify.md) 0.0.0
- [browserify-zlib](https://npm.io/package/browserify-zlib.md) ^0.2.0
- [path-browserify](https://npm.io/package/path-browserify.md) 0.0.0
- [querystring-es3](https://npm.io/package/querystring-es3.md) ^0.2.0
- [readable-stream](https://npm.io/package/readable-stream.md) ^3.6.0
- [https-browserify](https://npm.io/package/https-browserify.md) ^1.0.0
- [timers-browserify](https://npm.io/package/timers-browserify.md) ^2.0.2
- [console-browserify](https://npm.io/package/console-browserify.md) ^1.1.0
- [constants-browserify](https://npm.io/package/constants-browserify.md) ^1.0.0
- [@react-native-module/crypto](https://npm.io/package/@react-native-module/crypto.md) ^4.0.1
- [@react-native-module/randombytes](https://npm.io/package/@react-native-module/randombytes.md) ^4.0.0

## Recent versions

- 1.4.1 (latest) — 2022-08-04
- 1.4.1-0 (next) — 2022-08-04
- 1.4.0 — 2022-08-04
- 1.4.0-0 — 2022-08-04
- 1.3.0 — 2022-08-04
- 1.2.4-16 — 2022-08-04
- 1.2.4-15 — 2022-08-04
- 1.2.4-14 — 2022-08-04
- 1.2.4-13 — 2022-08-04
- 1.2.4-12 — 2022-07-25
- 1.2.4-11 — 2022-07-25
- 1.2.4-10 — 2022-07-25
- 1.2.4-9 — 2022-07-25
- 1.2.4-8 — 2022-07-25
- 1.2.4-6 — 2022-07-25
- … 8 more at https://npm.io/package/@react-native-module/node-libs-react-native/versions

## README

# @react-native-module/node-libs-react-native

This package provides React Native compatible implementations of Node core modules like `stream` and `http`. This is a fork of [node-libs-browser][] with a few packages swapped to be compatible in React Native.

[node-libs-browser]: https://www.npmjs.com/package/node-libs-browser

## Installation

This module has peerDependency "react", "react-native", "@react-native-module/pbkdf2"

```
npm install --save @react-native-module/node-libs-react-native @react-native-module/pbkdf2
```

```
yarn add @react-native-module/node-libs-react-native @react-native-module/pbkdf2
```

## Usage

This package exports a mapping of absolute paths to each module implementation, keyed by module name. Modules without React Native compatible implementations are `null`.

These modules can be used with React Native Packager's `metro.config.js` or Webpack's `resolve.alias`.

### Usage with React Native Packager

Add a `metro.config.js` file in the root directory of your React Native project and set `resolver.extraNodeModules`:

```js
// metro.config.js
module.exports = {
  resolver: {
    extraNodeModules: require("@react-native-module/node-libs-react-native"),
  },
};
```

For more information, see this post on [Node core modules in React Native][post].

[post]: https://gist.github.com/parshap/e3063d9bf6058041b34b26b7166fd6bd

### Support additional packages

Some package not in extraNodeModules, but react-native's runtime run much slow or cannot

[pbkdf2](https://github.com/crypto-browserify/pbkdf2) is so slow in react-native's runtime
[randombytes](https://github.com/crypto-browserify/randombytes) is complain "Error: Secure random number generation is not supported by this browser. \nUse Chrome, Firefox or Internet Explorer 11"

If you wanna solve this Issue follow Steps

1. Install babel-plugin-module-resolver

```
npm install --save-dev babel-plugin-module-resolver
```

```
yarn add -D babel-plugin-module-resolver
```

2. Edit babel.config.js

```js
// add lines

const nativeAlias = require('@react-native-module/node-libs-react-native/babelResolvers')

const nativePlugins = [
  [
    require.resolve('babel-plugin-module-resolver'),
    {
      alias: {
        ...nativeAlias
      },
    },
  ]
]

// add plugins to env (If you are not env, just add plugins)
module.exports = {
  presets: ['module:metro-react-native-babel-preset'],
  env: {
    production: {
      plugins: [...nativePlugins, 'react-native-paper/babel'],
    },
    development: {
      plugins: [...nativePlugins]
    },
    web: {
      plugins: [...myWebPlugins]
    }
  },
  ...
}
```

3. And Just Run it

### Globals

Node has certain globals that modules may expect, such as `Buffer` or `process`. React Native does not provide these globals. The [`node-libs-react-native/globals`][globals] module in this package will shim the global environment to add these globals. Just require (or import) this module in your app before anything else.

[globals]: ./globals.js

```js
require("node-libs-react-native/globals");
// ...
require("./app.js");
```

## Modules

The following are the module implementations provided by this package. Some modules also have a "mock" implementation provided in the `mock` directory. These are replacements with minimal functionality.

|     Module     |                                       RN-compatible                                       |              Mock               |
| :------------: | :---------------------------------------------------------------------------------------: | :-----------------------------: |
|     assert     |     [defunctzombie/commonjs-assert](https://github.com/defunctzombie/commonjs-assert)     |               ---               |
|     buffer     |                     [feross/buffer](https://github.com/feross/buffer)                     |  [buffer.js](./mock/buffer.js)  |
| child_process  |                                            ---                                            |               ---               |
|    cluster     |                                            ---                                            |               ---               |
|    console     |         [Raynos/console-browserify](https://github.com/Raynos/console-browserify)         | [console.js](./mock/console.js) |
|   constants    | [juliangruber/constants-browserify](https://github.com/juliangruber/constants-browserify) |               ---               |
|     crypto     |     [mvayngrib/react-native-crypto](https://github.com/mvayngrib/react-native-crypto)     |               ---               |
|     dgram      |                                            ---                                            |               ---               |
|      dns       |                                            ---                                            |     [dns.js](./mock/dns.js)     |
|     domain     |              [bevry/domain-browser](https://github.com/bevry/domain-browser)              |               ---               |
|     events     |                     [Gozala/events](https://github.com/Gozala/events)                     |               ---               |
|       fs       |                                            ---                                            |               ---               |
|      http      |               [jhiesey/stream-http](https://github.com/jhiesey/stream-http)               |               ---               |
|     https      |         [substack/https-browserify](https://github.com/substack/https-browserify)         |               ---               |
|     module     |                                            ---                                            |               ---               |
|      net       |                                            ---                                            |     [net.js](./mock/net.js)     |
|       os       |          [CoderPuppy/os-browserify](https://github.com/CoderPuppy/os-browserify)          |               ---               |
|      path      |          [substack/path-browserify](https://github.com/substack/path-browserify)          |               ---               |
|    process     |             [shtylman/node-process](https://github.com/shtylman/node-process)             | [process.js](./mock/process.js) |
|    punycode    |              [bestiejs/punycode.js](https://github.com/bestiejs/punycode.js)              |               ---               |
|  querystring   |       [mike-spainhower/querystring](https://github.com/mike-spainhower/querystring)       |               ---               |
|    readline    |                                            ---                                            |               ---               |
|      repl      |                                            ---                                            |               ---               |
|     stream     |            [nodejs/readable-stream](https://github.com/nodejs/readable-stream)            |               ---               |
| string_decoder |              [rvagg/string_decoder](https://github.com/rvagg/string_decoder)              |               ---               |
|      sys       |           [defunctzombie/node-util](https://github.com/defunctzombie/node-util)           |               ---               |
|     timers     |          [jryans/timers-browserify](https://github.com/jryans/timers-browserify)          |               ---               |
|      tls       |                                            ---                                            |     [tls.js](./mock/tls.js)     |
|      tty       |           [substack/tty-browserify](https://github.com/substack/tty-browserify)           |     [tty.js](./mock/tty.js)     |
|      url       |            [defunctzombie/node-url](https://github.com/defunctzombie/node-url)            |               ---               |
|      util      |           [defunctzombie/node-util](https://github.com/defunctzombie/node-util)           |               ---               |
|       vm       |                                            ---                                            |      [vm.js](./mock/vm.js)      |
|      zlib      |       [devongovett/browserify-zlib](https://github.com/devongovett/browserify-zlib)       |               ---               |

## Other React Native Modules

These are other React Native packages that implement Node core related
modules. They are not included in node-libs-react-native, but you may
find them useful separately.

### `dgram`

[react-native-udp][] implements Node's `dgram` API, but is not included
here due to its native implementation and need to use `react-native link`.

[react-native-udp]: https://github.com/tradle/react-native-udp

### `fs`

[react-native-fs][] implement's Node's `fs` API, but is not included
here due to its native implementation and need to use `react-native link`.

[react-native-fs]: https://github.com/itinance/react-native-fs

[react-native-level-fs][] provides an alternative pure JavaScript
implementation, using AsyncStorage as the underlying storage mechanism.

[react-native-level-fs]: https://github.com/tradle/react-native-level-fs

### `net`

[react-native-tcp][] implement's Node's `net` API, but is not included
here due to its native implementation and need to use `react-native link`.

[react-native-tcp]: https://github.com/PeelTechnologies/react-native-tcp

## Credit

This is a fork of [node-libs-browser][] with minor modifications and packages swapped out for React Native implementations. Thanks to those package authors for doing the hard work.

## License

MIT

---
_Source: https://npm.io/package/@react-native-module/node-libs-react-native · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
