Registry / devops / express-idempotent-redis

express-idempotent-redis

JSON →
library0.0.4jsnpmunverified

Express.js middleware for idempotent request processing with Redis caching. Version 0.0.4, low activity. It stores request responses by an idempotency key header, ensuring that duplicate requests return the cached response without re-executing the handler. Useful for preventing duplicate processing in distributed systems. Differentiates by supporting all HTTP verbs and optional response parsing.

npm install express-idempotent-redis
INSTALL
IMPORT
SIG · EXPRESS-IDEMPOTENT
E
express-idempotent-redis
devopsjavascriptv0.0.4
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

default
const idempotency = require('express-idempotent-redis');
import idempotency from 'express-idempotent-redis';
Package does not support ESM; CommonJS only.
default
import idempotency = require('express-idempotent-redis');
import { idempotency } from 'express-idempotent-redis';
No named exports.
default
const idempotency = require('express-idempotent-redis').default || require('express-idempotent-redis');
No mistake.
In some bundlers, default may need .default; test your environment.

Shows minimal setup: create Express app, attach idempotency middleware with Redis client, and define a route that increments counter.

const express = require('express'); const app = express(); const idempotency = require('express-idempotent-redis'); const redis = require('redis'); const client = redis.createClient({ url: process.env.REDIS_URL ?? 'redis://localhost:6379' }); let counter = 0; app.use(idempotency({ redisClient: client, idempotencyKey: 'IDEmpKey', sleepTime: 1000, secondsToCache: 60 })); app.get('/', (req, res) => { counter++; res.send(`Hello. This route was executed ${counter} times`); }); client.on('error', (err) => console.error('Redis error', err)); app.listen(3000, () => console.log('Listening on port 3000'));
Debug
Known issues
gotchaMiddleware will parse JSON responses by default. To receive raw (non-parsed) response, send header 'avoidParse: true'.
fix
Set 'avoidParse: true' in request headers to get raw string response.
affects: >=0.0.1
gotchaIf Redis client is not connected or emits error, middleware may fail silently or throw unhandled errors.
fix
Ensure Redis client is connected and handle its 'error' event before using middleware.
affects: >=0.0.1
gotchaThe idempotency key header (default 'IDEmpKey') is case-sensitive.
fix
Always send the header exactly as configured, e.g., 'IDEmpKey' (capitalization matters).
affects: >=0.0.1
gotchaSleep time only delays subsequent requests, does not guarantee order of execution.
fix
Use sleepTime large enough to allow first request to complete, but be aware of race conditions.
affects: >=0.0.1
gotchaCached responses are stored indefinitely until secondsToCache expires; no manual cache invalidation.
fix
Set secondsToCache appropriately; cache cannot be cleared via API.
affects: >=0.0.1
Errors
Common errors & fixes
TypeError: idempotency is not a function
Importing default incorrectly (ESM vs CJS mismatch) or package not installed.
fix
Use const idempotency = require('express-idempotent-redis'); (CommonJS).
Error: Redis connection refused
Redis server not running or client misconfigured.
fix
Start Redis server or provide correct REDIS_URL in client.createClient().
Cannot find module 'express-idempotent-redis'
Package not installed.
fix
Run 'npm install express-idempotent-redis' (also ensure express and redis are installed).
TypeError: Cannot read properties of undefined (reading 'setex')
redisClient not provided or not a valid Redis client with setex method.
fix
Pass the result of redis.createClient() (or ioredis) as redisClient option.
Upgrade
Version history
0.0.4latest on npm
Audit
Dependencies
redisrequiredRequired for Redis client instance to cache responses.
expressoptionalPeer dependency; middleware for Express.js.
Agent activity
5 hits · last 30 days
node
4
Resources
express-idempotent-redis — npm install express-idempotent-redis · libregistry