Recibo el error "algo salió mal al iniciar sesión en TypeError: no se pueden leer las propiedades de undefined (leyendo 'firmar')" en mi consola y necesito ayuda para resolverlo.
Aquí está mi código
import { mAdmin } from "../../library/magic-server"; import { jwt } from "jsonwebtoken"; export default async function login(req, res) { if (req.method === "POST") { try { const auth = req.headers.authorization; const didToken = auth ? auth.substr(7) : ""; console.log({ didToken }); const metadata = await mAdmin.users.getMetadataByToken(didToken); console.log({ metadata }); const token = jwt.sign( { ...metadata, iat: Math.floor(Date.now() / 1000), exp: Math.floor(Date.now() / 1000 + 7 * 24 * 60 * 60), "https://hasura.io/jwt/claims": { "x-hasura-allowed-roles": ["user", "admin"], "x-hasura-default-role": "user", "x-hasura-user-id": `${metadata.issuer}`, }, }, '<my secret key>', { algorithm: 'HS256' }, function(err, token){ console.log(token); console.error(err); } ); console.log({ token }); res.send({ done: true }); } catch (error) { console.error("something went wrong logging in", error); res.status(500).send({ done: false }); } } else { res.send({ done: false }); } }Usando cartero, publiqué una autorización con token en localhost: 3000/api/login. En la consola, puedo registrar metadatos y didToken, por lo que parece que el problema está en la línea jwt.
Además, la consola decía "al iniciar sesión (webpack-internal:///(api)/./pages/api/login.js:22:74)" debajo del error, pero no hay una letra 74 en la línea 22.
no necesitas llaves aquí:
import { jwt } from "jsonwebtoken";Intenta hacerlo:
import jwt from "jsonwebtoken";