Проблем совместимости адаптера next-auth и mongodb

Настраиваю аутентификацию с помощью mongodb и использую официальный адаптер mongodb. Однако, когда я настраиваю адаптер, появляется эта ошибка:

Тип "import("d:/IT/FRONT END/NEXT/pizza/node_modules/@auth/core/adapters").Adapter" не может быть назначен для типа "import("d:/IT/FRONT END/NEXT/pizza/node_modules/next-auth/adapters").Adapter".
  Типы свойства "createUser" несовместимы.
    Тип "((user: AdapterUser) => Awaitable<AdapterUser>) | undefined" не может быть назначен для типа "((user: Omit<AdapterUser, "id">) => Awaitable<AdapterUser>) | undefined".
      Тип "(user: AdapterUser) => Awaitable<AdapterUser>" не может быть назначен для типа "(user: Omit<AdapterUser, "id">) => Awaitable<AdapterUser>".
        Типы параметров "user" и "user" несовместимы.
          Свойство "id" отсутствует в типе "Omit<AdapterUser, "id">" и является обязательным в типе "AdapterUser".

Код файла:

import clientPromise from "@/libs/mongoClient";
import { User } from "@/models/User";
import { MongoDBAdapter } from "@auth/mongodb-adapter";
import bcrypt from "bcrypt";
import mongoose from "mongoose";
import NextAuth from "next-auth";
import CredentialsProvider from "next-auth/providers/credentials";
import GoogleProvider from "next-auth/providers/google";

export const authOptions = {
  adapter: MongoDBAdapter(clientPromise),
  secret: process.env.SECRET,
  providers: [
    GoogleProvider({
      clientId: process.env.GOOGLE_CLIENT_ID!,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
    }),
    CredentialsProvider({
      name: "Credentials",
      id: "credentials",
      credentials: {
        email: {
          label: "Email",
          type: "email",
          placeholder: "[email protected]",
        },
        password: { label: "Password", type: "password" },
      },
      async authorize(credentials, req) {
        const email = credentials?.email;
        const password = credentials!.password;

        mongoose.connect(process.env.MONGO_URI!);
        const user = await User.findOne({ email });
        const passwordOk = user && bcrypt.compareSync(password, user.password);

        if (passwordOk) {
          return user;
        }
        return null;
      },
    }),
  ],
};

const handler = NextAuth(authOptions);

export { handler as GET, handler as POST };
Может кто-то сталкивался с этим или что-то обновилось, поэтому вылазит такая ошибка?

Ответы (1 шт):

Автор решения: Harry Gupenec

Ошибка исправляется так:

npm install @next-auth/mongodb-adapter

import { MongoDBAdapter } from "@next-auth/mongodb-adapter";

Почитав здесь комментарии, то это в целом общая проблема в разных адаптерах. И исправляется тем, что нужно устанавливать пакет от @next-auth, а не от @auth, как пишется в доках к адаптерам

→ Ссылка