I have a simple backend application built with Node.js
.
The directory structure as below
and this is GitHub Repository Link
here below is the code of server.js
file
// server.js
const express = require('express');
const bodyParser = require('body-parser');
const dotenv = require('dotenv');
dotenv.config();
const app = express();
const port = process.env.PORT || 3000;
app.use(bodyParser.json());
try {
// Import routes
const adminRoutes = require('./routes/adminRoutes');
// Use routes
app.use('/api/admins', adminRoutes); // Correct base URL for admin routes
} catch (error) {
console.log(error);
}
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
and redisClient.js
file
const redis = require('redis');
const dotenv = require('dotenv');
dotenv.config();
var redisClient;
const initializeRedisClient = () => {
if (!redisClient) {
redisClient = redis.createClient();
redisClient.on('error', (err) => console.log('Redis Client Error:', err));
redisClient.on('connect', () => console.log('Connected to Redis'));
redisClient.on('end', () => console.log('Redis client disconnected'));
redisClient.on('reconnecting', () => console.log('Redis client reconnecting'));
}
return redisClient;
};
module.exports = initializeRedisClient;
The issue comes when I try to request API which are using middleware of checkBlacklist.
Below is the issue
C:workshopNode
JSecommerce-apinode_modules@redisclientdistlibclientindex.js:510
return Promise.reject(new errors_1.ClientClosedError());
^ClientClosedError: The client is closed
at Commander._RedisClient_sendCommand (C:workshopNode JSecommerce-apinode_modules@redisclientdistlibclientindex.js:510:31)
at Commander.commandsExecutor (C:workshopNode JSecommerce-apinode_modules@redisclientdistlibclientindex.js:190:154)
at BaseClass. [as get] (C:workshopNode JSecommerce-apinode_modules@redisclientdistlibcommander.js:8:29)
at checkBlacklist (C:workshopNode JSecommerce-apiroutesadminRoutes.js:14:21)
at Layer.handle [as handle_request] (C:workshopNode JSecommerce-apinode_modulesexpresslibrouterlayer.js:95:5)
at next (C:workshopNode JSecommerce-apinode_modulesexpresslibrouterroute.js:149:13)
at C:workshopNode JSecommerce-apimiddlewaresauthMiddleware.js:13:17
at C:workshopNode JSecommerce-apinode_modulesjsonwebtokenverify.js:261:12
at getSecret (C:workshopNode JSecommerce-apinode_modulesjsonwebtokenverify.js:97:14)
at module.exports [as verify] (C:workshopNode JSecommerce-apinode_modulesjsonwebtokenverify.js:101:10)
It looks like redis client connection is getting lost. Can someone please let me know what should I change in the code?