Note
To enable built-in Node.js APIs and polyfills, add the nodejs_compat compatibility flag to your Wrangler configuration file. This also enables nodejs_compat_v2 as long as your compatibility date is 2024-09-23 or later. Learn more about the Node.js compatibility flag and v2.
The Buffer
â API in Node.js is one of the most commonly used Node.js APIs for manipulating binary data. Every Buffer
instance extends from the standard Uint8Array
â class, but adds a range of unique capabilities such as built-in base64 and hex encoding/decoding, byte-order manipulation, and encoding-aware substring searching.
import { Buffer } from 'node:buffer';
const buf = Buffer.from('hello world', 'utf8');
console.log(buf.toString('hex'));
// Prints: 68656c6c6f20776f726c64
console.log(buf.toString('base64'));
// Prints: aGVsbG8gd29ybGQ=
A Buffer extends from Uint8Array
. Therefore, it can be used in any Workers API that currently accepts Uint8Array
, such as creating a new Response:
const response = new Response(Buffer.from("hello world"));
You can also use the Buffer
API when interacting with streams:
const writable = getWritableStreamSomehow();
const writer = writable.getWriter();
writer.write(Buffer.from("hello world"));
One key difference between the Workers implementation of Buffer
and the Node.js implementation is that some methods of creating a Buffer
in Node.js will allocate those from a global memory pool as a performance optimization. The Workers implementation does not use a memory pool and all Buffer
instances are allocated independently.
Further, in Node.js it is possible to allocate a Buffer
with uninitialized memory using the Buffer.allocUnsafe()
method. This is not supported in Workers and Buffer
instances are always initialized so that the Buffer
is always filled with null bytes (0x00
) when allocated.
Refer to the Node.js documentation for Buffer
â for more information.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4