redis / node-redis

Redis Node.js client

Home Page:https://redis.js.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Invalid argument type when trying to pass EX into set function

Hardekerlis opened this issue · comments

When I try to set an expiration on my key redis throws a TypeError: Invalid argument error. I've basically copied the docs.

Environment:

  • Node.js Version: v18.12.0
  • Redis Server Version: 6.2.7
  • Node Redis Version: 4.5.1
  • Platform: Fedora 34
await redisClient.set(`test`, `test`); // Works

await redisClient.set(`test`, `test`, {}); // Does not work

await redisClient.set(`test`, `test`, { // Does not work
    EX: 10,
  });

Error:
/home/gustaf/projekt/random-website/server/node_modules/redis/node_modules/@redis/client/dist/lib/client/RESP2/encoder.js:17 throw new TypeError('Invalid argument type'); ^ TypeError: Invalid argument type at encodeCommand (/home/gustaf/projekt/random-website/server/node_modules/redis/node_modules/@redis/client/dist/lib/client/RESP2/encoder.js:17:19) at RedisCommandsQueue.getCommandToSend (/home/gustaf/projekt/random-website/server/node_modules/redis/node_modules/@redis/client/dist/lib/client/commands-queue.js:187:45) at Commander._RedisClient_tick (/home/gustaf/projekt/random-website/server/node_modules/redis/node_modules/@redis/client/dist/lib/client/index.js:440:76) at Commander._RedisClient_sendCommand (/home/gustaf/projekt/random-website/server/node_modules/redis/node_modules/@redis/client/dist/lib/client/index.js:424:82) at Commander.sendCommand (/home/gustaf/projekt/random-website/server/node_modules/redis/node_modules/@redis/client/dist/lib/client/index.js:375:93) at Commander.<computed> (/home/gustaf/projekt/random-website/server/node_modules/redis/node_modules/@redis/client/dist/lib/client/index.js:412:27) at forgotPassword (/home/gustaf/projekt/random-website/server/src/gql/resolvers/endpoints/user/forgot-password.ts:18:21) at async UserResolver.forgotPassword (/home/gustaf/projekt/random-website/server/src/gql/resolvers/endpoints/user/index.ts:61:14) at async dispatchHandler (/home/gustaf/projekt/random-website/server/node_modules/type-graphql/dist/resolvers/helpers.js:83:24) at async /home/gustaf/projekt/random-website/server/node_modules/type-graphql/dist/resolvers/helpers.js:84:26

maybe the client is in legacy mode?

I've tried it both with legacy mode and without

this script does not work (it should log "OK")?

import { createClient } from 'redis';

const client = createCilient();

client.on('error', err => console.error('Redis Client Error', err));

await client.connect();

console.log(
  await client.set('key', 'value', {
    EX: 10
  })
);

one more thing, can you please try this (just in case its v3 or in legacy mode):

redisClient.set(`test`, `test`, 'EX', '10');

Sorry for late response.
The attached script above with EX passed in an object worked. What I think happened is that I forgot to save my file when I removed legacy mode from the create client config...

Closing this issue as it has been resolved.