Estoy generando el token JWT y allí tengo que pasar el argumento de expiración que debería estar en cadena y ese valor proviene de las credenciales. este es el código, dígame cómo puedo cambiar este valor a una cadena.
const generateToken = ({ id, errorMessage, secret }) => { try { const token = jwt.sign({ id }, secret, { expiresIn:JSON.stringify(`${config.SESSION_DURATION * 60 * 1000}`), }); return token; } catch (err) { throw errorMessage || err; } };este código anterior genera un error como este
"\"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60"y así es como estoy pasando este token como una cookie tal vez este error venga de aquí
res .cookie("jwt_auth", token, { maxAge: config.SESSION_DURATION * 60 * 1000, //it should be in miliseconds // maxAge: 3600000, httpOnly: true, sameSite: true, secure: config.NODE_ENV === "development", }) .redirect(config.CLIENT_URL);Da un error de tipo.
Espera un número y está pasando una cadena (también son segundos, no milisegundos).
Cuando su cadena debería ser '1s', '2m', ... es una biblioteca npm ms https://www.npmjs.com/package/ms .
O use ese valor o número compatible con ms .
Esto debería funcionar.
const generateToken = ({ id, errorMessage, secret }) => { try { const token = jwt.sign({ id }, secret, { expiresIn: Number(config.SESSION_DURATION), }); return token; } catch (err) { throw errorMessage || err; } };deberías poder pasar
let x = config.SESSION_DURATION * 60 * 1000 ... maxAge: x.toString() ...o use la cadena '365d' como indica el mensaje de error