Web HTTP Library (creationix)
The `web` package, also known as `node-web` and authored by `creationix`, is an extremely early-stage (v0.0.2) web/HTTP library for Node.js, last published over a decade ago in January 2013. It was conceived as a lightweight and fast alternative intended to entirely replace Node.js's built-in `http` module and offer a more streamlined approach to web application development than contemporary middleware systems like `connect` or `stack`. Its design was heavily influenced by interface patterns found in `wsgi`, `rack`, `jsgi`, and `strata.js`, emphasizing simple module composition where any function implementing a `(request, respond)` or `(req, res, next)` interface could serve as a valid web application layer. Given its very low version number and the lack of updates for over a decade, this project is considered abandoned and is highly unlikely to be compatible with modern Node.js runtimes or best practices, including native ESM support. Its historical significance lies in exploring alternative HTTP server paradigms during Node.js's formative years.
Common errors
-
TypeError: require(...) is not a function
cause Attempting to destructure `web` module imports (e.g., `const { createServer } = require('web')`). The module exports an object directly, not named properties for destructuring.fixUse `const web = require('web')` and then access methods like `web.createServer`. -
ERR_REQUIRE_ESM
cause Attempting to `import web from 'web'` in an ES Module context. This package is CommonJS-only.fixThis package is not compatible with ES Modules. You would need to either run your application in a CommonJS context or rewrite the application using a modern, ESM-compatible HTTP library.
Warnings
- breaking The package is extremely old (v0.0.2, last updated Jan 2013) and relies on outdated Node.js APIs and patterns. It is highly unlikely to be compatible with modern Node.js versions (e.g., Node.js 14+).
- gotcha This library attempts to *replace* the built-in Node.js `http` module. This design choice is fundamentally incompatible with most contemporary Node.js web development, which typically builds upon or coexists with the `http` module, not substitutes it entirely.
- deprecated The project is abandoned, with no updates or maintenance for over a decade. It does not support modern JavaScript features, ES Modules (ESM), or current security best practices.
Install
-
npm install web -
yarn add web -
pnpm add web
Imports
- web
import web from 'web'
const web = require('web') - createServer
const { createServer } = require('web')const server = web.createServer(...)
Quickstart
const web = require('web');
const app = web.createServer(function (req, res, next) {
if (req.url === '/') {
res.end('Hello World\n');
} else {
next(); // Pass control to the next layer
}
});
// The server object allows for starting and stopping the HTTP listener.
// In a real application, you might add more complex routing or middleware before app.listen.
app.listen(8080, () => {
console.log('Web server listening on http://localhost:8080/');
// To stop the server for testing purposes or graceful shutdown:
// setTimeout(() => {
// server.close(() => console.log('Server stopped.'));
// }, 5000);
});