Discover which npm packages work in Cloudflare Workers. 395+ packages tested and working.
Showing runtime packages only. Build tools, CLI tools, and test frameworks are hidden by default.
Enable "Show build tools & incompatible" to see all 992 tested packages.
Showing 11 packages
Extensible HTTP server framework (predecessor to Express). Works with httpServerHandler.
π‘ Alternative: Hono or itty-router
Error: Unexpected token ':'
import { httpServerHandler } from 'cloudflare:node';
import connect from 'connect';
const app = connect();
app.use((req, res) => {
res.end('Hello from Connect!');
});
app.listen(3000);
export default httpServerHandler({ port: 3000 });
Node.js web framework. Works on Workers with httpServerHandler from cloudflare:node. Requires nodejs_compat flag.
π‘ Alternative: Hono (most Express-like, fastest), itty-router (tiny, simple), Toucan (Sentry-like routing), or workers-router (official Cloudflare routing helper)
Error: Unexpected strict mode reserved word
import { httpServerHandler } from 'cloudflare:node';
import express from 'express';
const app = express();
app.use(express.json());
app.get('/',(req, res) => res.json({ message: 'Express on Workers!' }));
app.post('/echo', (req, res) => res.json({ received: req.body }));
app.listen(3000);
export default httpServerHandler({ port: 3000 });
Express/Connect final handler for ending middleware chains. Works with httpServerHandler - correctly handles 404s and errors.
π‘ Alternative: Use Hono or itty-router for error handling
import { httpServerHandler } from 'cloudflare:node';
import { createServer } from 'node:http';
import finalhandler from 'finalhandler';
const server = createServer((req, res) => {
const done = finalhandler(req, res);
if (req.url === '/') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ message: 'Hello!' }));
} else {
done(); // 404 for unknown routes
}
});
server.listen(3000);
export default httpServerHandler({ port: 3000 });
Formidable is a Node.js form parsing library for handling multipart/form-data, especially file uploads, in traditional Node.js HTTP servers (http.createServer). Requires node:os module which is not supported in Workers nodejs_compat (only crypto, fs, path, buffer, stream, events, util, http, https, net, dns, zlib, timers, url, assert, process, diagnostics_channel, async_hooks are supported). Designed for Node.js request/response objects and filesystem-based temporary file storage during upload processing. Workers uses Request/Response objects and has better alternatives for form parsing.
π‘ Alternative: Workers Request.formData() API (native multipart/form-data parsing built-in), or busboy (lower-level multipart parser that may work with Workers)
Error: No such module "node:os".
Node.js web framework. Works on Workers with httpServerHandler from cloudflare:node. Requires nodejs_compat flag.
π‘ Alternative: hono, itty-router
Error: Unexpected token ':'
import { httpServerHandler } from 'cloudflare:node';
import Koa from 'koa';
const app = new Koa();
app.use(async (ctx) => {
ctx.body = { message: 'Koa on Workers!' };
});
app.listen(3000);
export default httpServerHandler({ port: 3000 });
Koa body parsing middleware
π‘ Alternative: hono, itty-router
Error: Package koa-body needs manual test configuration - do not use generic Object.keys() test
Koa body parsing middleware
π‘ Alternative: hono, itty-router
Error: Command failed: npm install npm warn deprecated rollup-plugin-inject@3.0.2: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. npm warn deprecated sourcema
Koa middleware composition
π‘ Alternative: hono, itty-router
Error: Package koa-compose needs manual test configuration - do not use generic Object.keys() test
Koa logging middleware
π‘ Alternative: hono, itty-router
Error: Package koa-logger needs manual test configuration - do not use generic Object.keys() test
Koa routing middleware
π‘ Alternative: hono, itty-router
Error: Unexpected token ':'
Koa static file middleware
π‘ Alternative: hono, itty-router
Error: Unexpected token ':'
Many popular npm packages are build tools (webpack, babel), test frameworks (jest, mocha), or CLI utilities (chalk, commander) that run during developmentβnot in production. Cloudflare Workers is a runtime environment for production code. These tools still work great for building your Workers project, they just don't run inside Workers themselves.
Yes! As of September 2025, Workers supports node:http server APIs.
Use httpServerHandler from cloudflare:node to wrap Express, Koa, or other Node.js HTTP frameworks.
For new projects, we recommend lightweight alternatives like Hono or itty-router which are built for edge environments.
Workers supports database clients like pg (PostgreSQL) and mysql2 when connecting to public endpoints.
For production, use edge-optimized solutions: Cloudflare D1 (SQLite), Neon (serverless Postgres), PlanetScale (MySQL), or Upstash Redis.
Common reasons: Native modules (C++ bindings like sharp, bcrypt) don't workβuse alternatives like bcryptjs or Cloudflare Images.
Filesystem access (fs module for local files) isn't availableβuse KV, R2, or D1 instead.
TCP sockets (raw socket.io, redis) aren't supportedβuse Durable Objects, WebSockets, or HTTP-based alternatives.