Kita tidak bisa menggunakan axios pada middleware di Next.js secara langsung. Sebagai contoh kode di bawah ini

try {
    const response = await axios.get(
        `${process.env.NEXT_PUBLIC_BACKEND_API_URL}/user`,
        {
            headers: {
                Authorization: `Bearer ${accessToken}`,
            },
        }
    );

    return NextResponse.next();
} catch (error) {
    console.error(error.message);
    return NextResponse.redirect(new URL("/admin/login", request.url));
}


Jika kita mencoba menjalankan kode di atas pada middleware, maka akan muncul error "adapter is not a function"


Solusi :

Install package @vespaiach/axios-fetch-adapter menggunakan NPM, Yarn atau PNPM

npm install @vespaiach/axios-fetch-adapter

yarn add @vespaiach/axios-fetch-adapter

pnpm add @vespaiach/axios-fetch-adapter


Kemudian tambahkan adapter axios menggunakan package yang baru saja kita install tadi. Sehingga kode akan menjadi seperti ini

import fetchAdapter from "@vespaiach/axios-fetch-adapter";

try {
    const response = await axios.get(
        `${process.env.NEXT_PUBLIC_BACKEND_API_URL}/user`,
        {
            adapter: fetchAdapter,
            headers: {
                Authorization: `Bearer ${accessToken}`,
            },
        }
    );

    return NextResponse.next();
} catch (error) {
    console.error(error.message);
    return NextResponse.redirect(new URL("/admin/login", request.url));
}