Research
Security News
Kill Switch Hidden in npm Packages Typosquatting Chalk and Chokidar
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
redis-errors
Advanced tools
The redis-errors npm package provides a set of custom error classes for handling Redis-related errors in a more structured and meaningful way. It helps developers to catch and handle specific Redis errors more effectively.
Custom Error Classes
The package provides custom error classes like ReplyError, AbortError, ParserError, and AggregateError. These classes help in identifying and handling specific types of Redis errors.
const { ReplyError, AbortError, ParserError, AggregateError } = require('redis-errors');
try {
// Simulate a Redis operation that throws an error
throw new ReplyError('This is a reply error');
} catch (error) {
if (error instanceof ReplyError) {
console.error('Caught a ReplyError:', error.message);
}
}
Error Handling
The package allows for structured error handling by checking the instance of the error and responding accordingly. This makes it easier to debug and manage Redis-related errors.
const { ReplyError, AbortError, ParserError, AggregateError } = require('redis-errors');
function handleError(error) {
if (error instanceof ReplyError) {
console.error('ReplyError:', error.message);
} else if (error instanceof AbortError) {
console.error('AbortError:', error.message);
} else if (error instanceof ParserError) {
console.error('ParserError:', error.message);
} else if (error instanceof AggregateError) {
console.error('AggregateError:', error.message);
} else {
console.error('Unknown error:', error.message);
}
}
try {
// Simulate a Redis operation that throws an error
throw new AbortError('This is an abort error');
} catch (error) {
handleError(error);
}
ioredis is a robust, full-featured Redis client for Node.js. It provides built-in error handling for various Redis errors, but it does not offer the same level of custom error classes as redis-errors. Instead, it focuses on providing a comprehensive set of features for interacting with Redis.
node-redis is another popular Redis client for Node.js. It includes basic error handling capabilities but lacks the specialized custom error classes provided by redis-errors. It is designed to be simple and easy to use for basic Redis operations.
All error classes used in node_redis from v.3.0.0 are in here. They can be required as needed.
Install with NPM:
npm install redis-errors
const { ReplyError, InterruptError } = require('redis-errors');
// Using async await
try {
await client.set('foo') // Missing value
} catch (err) {
if (err instanceof InterruptError) {
console.error('Command might have been processed')
}
if (err instanceof ReplyError) {
// ...
}
throw err
}
// Using callbacks
client.set('foo', (err, res) => {
if (err) {
if (err instanceof InterruptError) {
// ...
}
}
})
All errors returned by NodeRedis use own Error classes. You can distinguish different errors easily by checking for these classes.
To know what caused the error they might contain properties to know in more detail what happened.
Each error contains a message
, a name
and a stack
property. Please be aware
that the stack might not be useful due to the async nature and is in those cases
therefore limited to two frames.
There might be more not yet documented properties as well. Please feel free to open a pull request to document those as well.
Properties
:
Properties depend on the individual error.
All errors returned by NodeRedis (client) are RedisError
s.
Subclass of Error
Properties
:
args
: The arguments passed to the command.command
: The command name.code
: The Redis
error code. Redis itself uses some internal error codes.All errors returned by Redis itself (server) will be a ReplyError
.
Subclass of RedisError
Properties
:
buffer
: The raw buffer input stringified.offset
: The character count where the parsing error occurred.Parsing errors are returned as ParserError
.
Subclass of RedisError
Note: If you encounter one of these please report that error including the
attached offset
and buffer
properties!
Properties
:
args
: The arguments passed to the command.command
: The command name.If a command was not yet executed but rejected, it'll return a AbortError
.
Subclass of RedisError
Properties
:
args
: The arguments passed to the command.command
: The command name.origin
: The original error that caused the interruptAll executed commands that could not fulfill (e.g. network drop while
executing) return a InterruptError
.
Subclass of AbortError
Note: Interrupt errors can happen for multiple reasons that are out of the
scope of NodeRedis itself. There is nothing that can be done on library side
to prevent those.
FAQs
Error classes used in node_redis
The npm package redis-errors receives a total of 3,022,533 weekly downloads. As such, redis-errors popularity was classified as popular.
We found that redis-errors demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.