Je développe avec dossier + express
je veux utiliser Redis sur Session Storage et j'ai installé Redis, Connect-Redis et I Code ci-dessous
import { createClient } from 'redis';
import * as RedisStore from 'connect-redis';
...
const client = createClient({
url: 'redis://default:qwer1234@localhost:6379',
});
client.connect().then(() => {
console.log('redis success');
});
...
app.use(
session({
secret: env.COOKIE_SECRET!,
resave: false,
saveUninitialized: false,
store: new redisSession({
client: client,
}),
})
);
et j'ai écrit le code ci-dessous pour tester Redis
app.get('/', (req, res) => {
const sess = req.session;
if (sess.key) {
res.send(sess.key);
} else {
res.send('FAIL');
}
});
app.post('/login', (req, res) => {
const sess = req.session;
const { username } = req.body;
sess.key = username
// add username and password validation logic here if you want.If user is authenticated send the response as success
res.end('success');
});
app.get('/logout', (req, res) => {
req.session.destroy((err) => {
if (err) {
return console.log(err);
}
res.send('OK');
});
});
Mais, j'obtiens l'erreur suivante lors de la sauvegarde d'une valeur à la session. TypeError [ERR_INVALID_ARG_TYPE]: L'argument "Chunk" doit être de type chaîne ou une instance de tampon ou de uint8Array. Reçu une instance de tableau
parce que cette erreur, le code Passport-local qui a déjà été mis en œuvre à l'aide de stockage de mémoire ne fonctionne pas. aidez-moi plz ..
Il y a un problème lors de l'utilisation de la version actuelle de ReDIS 4.0 basée sur l'heure actuelle, vous devez donc définir legacyMode: true
Dans le réglage de Redis.
const client = createClient({
url: yourURL,
legacyMode: true,
});