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"
}
}
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:
Beantwortet von – SuleymanSah
Antwort geprüft von – Timothy Miller (FixError Admin)