[FIXED] Fehler: secretOrPrivateKey muss einen Wert haben

Ausgabe

Ich verwende jwt zum Erstellen von Token, aber wenn ich mich über Postbote anmelde, erhalte ich die Fehlermeldung „Error: secretOrPrivateKey must have a value“ von meiner Konsole. Ich habe meinen Login-Code beigefügt. Bitte wer kann mir helfen

exports.login = (req, res, next) => {
  User.findOne({
    where: {
      email: req.body.email
    }
  })
    .then(user => {
      if (!user) {
        return res.status(401).json({
          message:
            "Auth failed!! either the account does't exist or you entered a wrong account"
        });
      }
      bcrypt.compare(req.body.password, user.password, (err, result) => {
        if (err) {
          return res.status(401).json({
            message: "Auth failed",
            token: token
          });
        }
        if (result) {
          const token = jwt.sign(
            {
              email: user.email,
              password: user.id
            },
            process.env.JWT_KEY,
            {
              expiresIn: "1h"
            }
          );

          res.status(200).json({
            message: "Auth granted, welcome!",
            token: token
          });
        }
      });
    })
    .catch(err => {
      console.log(err);
      res.status(500).json({
        error: err
      });
    });
};

Dies ist meine env.json-Datei

{
    "env":{
        "MYSQL":"jllgshllWEUJHGHYJkjsfjds90",
        "JWT_KEY": "secret"
    }
}

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Lösung

Es sieht so aus, als ob Ihre Anwendung die Umgebungsvariable nicht richtig lesen kann.

Ich weiß nicht, welches Paket Sie zum Laden von Umgebungsvariablen verwenden, aber der einfachste Weg ist die Verwendung des dotenv -Pakets.

Importieren Sie es nach der Installation mit npm i dotenv so früh wie möglich in die Hauptdatei Ihrer Anwendung:

require("dotenv").config();

Erstellen Sie eine .env-Datei in Ihrem Anwendungsstammordner mit diesem Inhalt (wie Sie sehen, ist das Format Schlüssel=Wert)

MYSQL=jllgshllWEUJHGHYJkjsfjds90
JWT_KEY=secret

Dann können Sie auf ihre Werte zugreifen, wie Sie es bereits getan haben:

process.env.JWT_KEY

.env-Datei:

Geben Sie hier die Bildbeschreibung ein


Beantwortet von –
SuleymanSah


Antwort geprüft von –
Timothy Miller (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like