📑
ログイン機能作成中のエラー
問題
ログイン機能を作成中にJWTのtokenが発行されないエラーがありました。
import {NextRequest, NextResponse} from "next/server";
import User from "@/models/userModel";
import bcryptjs from "bcryptjs";
import jwt from "jsonwebtoken";
import {connect} from "@/dbConfig/dbConfig";
connect();
export async function POST(request:NextRequest){
try {
const reqBody = await request.json();
const {email, password} = reqBody;
const user = await User.findOne({email});
if (!user) {
return NextResponse.json({error: 'user does not exist'}, {status: 400});
}
const ValidPassword = await bcryptjs.compare(password, user.password);
if (!ValidPassword) {
return NextResponse.json({error: "Invalid password"}, {status: 400});
}
const tokenData = {
id: user._id,
email: user.email,
username: user.username
}
//この下がエラー
const token =jwt.sign(tokenData, process.env.TOKEN_SECRET!, {expiresIn: "1d"})
console.log("gg")
const response = NextResponse.json({
message: "Login success",
success: true,
});
response.cookies.set('token', token, {
httpOnly: true,
});
return response
}catch(error:any){
return NextResponse.json({error:error.message},{status:500});
}
}
エラーとなっているコードは、
const token =jwt.sign(tokenData, process.env.TOKEN_SECRET!, {expiresIn: "1d"})
です。
解決策
エラーの理由は、.envファイルの名前を
TOKEN_SECRET!=パスワード
にしていたからです。!はパスワードの名前ではないと知りませんでした。
みなさんも気を付けてください!
Discussion