Apache OpenDAL™ Node.js Binding
A native Node.js binding for OpenDAL: access S3, GCS, Azure Blob, HDFS, the local filesystem, and 50+ more services through one API, with the performance of the Rust core underneath.
New to the model behind the API? Read Concepts first — service, operator, layer, operation are the same four ideas in every language.
note
This binding has its own version number, independent of the Rust core. Check compatibility against the binding's version, not the core's.
Status
Released and stable, published to npm.
Capabilities
- Promise-based async API — every operation returns a
Promise;awaitit. - Synchronous variants — each verb has a
*Syncform (readSync,writeSync, …) for blocking code. - Streaming reads and writes via Node
Readable/Writablestreams for data that does not fit in memory. - All services included — the package bundles every backend; there are no build flags to enable.
- Composable layers for retry, timeout, logging, throttle, and concurrency limits — see Going to production.
- Presigned URLs for services that support them (S3, GCS, Azblob, …).
Installation
npm install opendal
Useful Links
- API reference: opendal.apache.org/docs/nodejs
- Services & configuration: /services
- Upgrade guide:
upgrade.md - Source & examples:
bindings/nodejs/·bindings/nodejs/examples/
Next steps
- Getting started — a runnable program, then a real backend.
- Connecting to your storage — build an operator for any service.
- Common tasks — read, write, stream, list, copy, and presign.
- Going to production — retry, timeouts, errors, observability.