トークンの作成にjwtを使用していますが、postmanを介してログインすると、コンソールから「エラー:secretOrPrivateKeyに値が必要です」というエラーが表示されます。ログインコードを添付しました。私を助けることができる人をください
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
});
});
};
これは私のenv.jsonファイルです
{
"env":{
"MYSQL":"jllgshllWEUJHGHYJkjsfjds90",
"JWT_KEY": "secret"
}
}
環境変数のロードに使用しているパッケージはわかりませんが、最も簡単な方法はdotenvパッケージを使用することです。
Npm i dotenvでインストールした後、次のように、できるだけ早くアプリケーションのメインファイルにインポートします。
require("dotenv").config();
このコンテンツを使用して、アプリケーションのルートフォルダーに.envファイルを作成します(形式はkey = valueです)。
MYSQL=jllgshllWEUJHGHYJkjsfjds90
JWT_KEY=secret
次に、すでに行ったようにそれらの値にアクセスできます。
process.env.JWT_KEY
.envファイル:
本気ですか process.env.JWT_KEY
に有効な値がありますか? undefined
またはnull
だと思います。
私は単にprocess.env.JWT_KEYを削除し、「secret」に置き換えて、正常に動作しました。