Saltar al contenido
ecdsa.com
jsonwebtoken (Node.js)Bibliotecas de JWT

Mensaje de error

secret or public key must be provided

También se muestra como

  • secretOrPrivateKey must have a value

`jwt.sign()` informa del mismo problema como «secretOrPrivateKey must have a value» (un `Error` simple).

jsonwebtoken (Node.js) — JsonWebTokenError from jwt.verify(); the sign() twin is a plain Error

Qué significa

`jwt.verify()` recibió un token firmado, pero el argumento de la clave está vacío (`undefined`, `null` o `""`). jsonwebtoken no puede comprobar una firma sin clave, así que se detiene antes de mirar el token. En el lado de la firma hay un error gemelo, `secretOrPrivateKey must have a value`, que lanza `jwt.sign()` por el mismo motivo.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Validar la configuración al arrancar

    Lee las claves necesarias una sola vez al iniciar el proceso y termina con un mensaje claro si falta alguna. Así, una instancia mal configurada nunca empieza a atender solicitudes.

    js
    function requireEnv(name) {
      const value = process.env[name];
      if (!value) throw new Error(name + " is not set");
      return value;
    }
    
    const JWT_PUBLIC_KEY = requireEnv("JWT_PUBLIC_KEY"); // evaluated once at startup
  2. 2.

    Cargar los archivos de entorno antes que nada

    Importa `dotenv/config` como la primera de todas las importaciones, o usa la opción integrada `--env-file` de Node, para que todos los módulos vean los valores.

    js
    // Load .env before any module that reads process.env at import time.
    import "dotenv/config";
    import { app } from "./app.js";
    
    // Node 20.6+: no package needed
    // node --env-file=.env server.js

Errores relacionados

Explorar toda la base de datos de errores de firma