Ошибка при сборке проекта на next js14
При сборке проекта npm run build выводит ошибку: Type error: Route "app/api/auth/[...nextauth]/route.ts" does not match the required types of a Next.js Route. "authOptions" is not a valid Route export field.
Не понимаю как решить подскажите пожалуйста
import { getUser, saveUserCart, saveUserWishlist } from '@/lib/data';
import NextAuth, { AuthOptions, Session, SessionStrategy } from 'next-auth';
import CredentialsProvider from 'next-auth/providers/credentials';
import { z } from 'zod';
import bcrypt from 'bcrypt';
import { User } from '@/types/types';
import { JWT } from 'next-auth/jwt';
export const authOptions: AuthOptions = {
pages: {
signIn: '/auth/sign-in',
},
providers: [
CredentialsProvider({
name: 'credentials',
credentials: {},
async authorize(credentials) {
if (!credentials) {
throw new Error('Учетные данные не были предоставлены');
}
// Извлекаем значения cart и wishlist из credentials с корректной типизацией
const { cart, wishlist } = credentials as { cart: string; wishlist: string };
const parsedCart = JSON.parse(cart);
const parsedWishlist = JSON.parse(wishlist);
const parsedCredentials = z
.object({ login: z.string().email(), password: z.string().min(8) })
.safeParse(credentials);
if (parsedCredentials.success) {
const { login, password } = parsedCredentials.data;
const user: User | undefined = await getUser(login);
if (!user) throw new Error('Пользователь не найден');
const passwordsMatch = await bcrypt.compare(password, user.password);
if (passwordsMatch) {
// Save user basket from database
await saveUserCart(user.id, parsedCart);
// Save user wishlist from database
await saveUserWishlist(user.id, parsedWishlist);
return user;
}
}
console.log('Неверные данные');
throw new Error('Неверные данные');
},
}),
],
session: {
strategy: 'jwt' as SessionStrategy,
maxAge: 24 * 60 * 60, // 24 hours
},
callbacks: {
async jwt({
token,
user,
}: {
token: JWT;
user: {
id?: string | null | undefined;
username?: string | null | undefined;
email?: string | null | undefined;
role?: string | null | undefined;
};
}) {
if (user) {
token.id = user.id;
token.name = user.username;
token.email = user.email;
token.role = user.role;
}
return token;
},
async session({
session,
token,
}: {
session: Session;
user: {
id?: string | null;
username?: string | null;
email?: string | null;
role?: string | null;
};
token: JWT;
}) {
if (session.user) {
session.user.id = token.sub;
session.user.name = token.name;
session.user.email = token.email;
session.user.role = token.role as string | null | undefined;
}
return session;
},
},
secret: process.env.NEXTAUTH_SECRET,
};
export const handler = NextAuth(authOptions);
export { handler as GET, handler as POST };