📑

ログイン機能作成中のエラー

2024/03/24に公開

問題

ログイン機能を作成中に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