Next js middleware Error: Module not found: Can't resolve 'crypto'

Viewed 27

I have a problem when I use /pages/_middleware.ts in next js, I want to get the jwt token and check it in that _middleware, that's my code :

import { verify } from 'jsonwebtoken';
import { NextRequest, NextResponse } from 'next/server';
export async function middleware(req: NextRequest) {
    const { pathname } = req.nextUrl;
    let token = req.cookies['auth'];

    if (pathname.includes('/admin/dashboard')) {
        if (token === undefined)
            return NextResponse.redirect(new URL('/', req.url));
        try {
            verify(token, process.env.JWT_SECRET as string);
            return NextResponse.next();
        } catch (err) {
            return NextResponse.redirect(new URL('/signin', req.url));
        }
    }
    return NextResponse.next();
}

export default middleware;

get errors:

Error: Module not found: Can't resolve 'crypto'

Import trace for requested module:
./node_modules/jws/lib/sign-stream.js
./node_modules/jws/index.js
./node_modules/jsonwebtoken/decode.js
./node_modules/jsonwebtoken/index.js
./src/pages/admin/chinta/_middleware.ts
0 Answers
Related