@PonomarevAleksandr

Почему не собирается проект из за PrismaAdapter?

Мой код работает в режиме «npm run dev», но когда я хочу сделать билд проекта, я получаю эту ошибку:

./node_modules/next-auth/src/core/lib/assert.ts:134:27
Type error: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Adapter'. No index signature with a parameter of type 'string' was found on type 'Adapter'.

132 | "useVerificationToken", 133 | "getUserByEmail", 134 | ].filter((method) => !adapter[method]) | ^ 135 | 136 | if (missingMethods.length) { 137 | return new MissingAdapterMethods(


Я думаю, что проблема в этой части:
import bcrypt from 'bcrypt';
import NextAuth, { NextAuthOptions } from 'next-auth'
import CredentialsProvider from 'next-auth/providers/credentials';
import GoogleProvider from 'next-auth/providers/google';
import { PrismaAdapter } from '@next-auth/prisma-adapter';

import prisma from '@/app/libs/prismadb';

export const authOptions: NextAuthOptions = {
    adapter: PrismaAdapter(prisma) ,


Я уже пытаюсь изменить «NextAuthOptions» на «AuthOptions», но это не работает.

Я попытался указать тип:

adapter: PrismaAdapter(prisma) as any
или
adapter: PrismaAdapter(prisma as any)

Но это все равно не сработало
  • Вопрос задан
  • 134 просмотра
Решения вопроса 2
Alexandroppolus
@Alexandroppolus
кодир
["useVerificationToken", "getUserByEmail"].filter((method) => !adapter[method])


Этот твой массив ["useVerificationToken", "getUserByEmail"] автоматически определяется как массив строк.

Сделай так:
(["useVerificationToken",  "getUserByEmail"] as const).filter((method) => !adapter[method])


-----
в dev-режиме скорее всего выставлен конфиг suppressImplicitAnyIndexErrors=true, который подавляет ошибку. Посмотри конфиги, если найдешь эту содомию, выпиливай сразу.
Ответ написан
Aetae
@Aetae Куратор тега TypeScript
Тлен
Ошибка возникает не у тебя, а в стороннем коде модуля next-auth.
Заигнорить это можно указав skipLibCheck в tsconfig.
Однако лучше, по возможности, разобраться: причиной может быть что ты используешь слишком старую версию typecript, или старую версию модуля, или случайно подключаешь несколько версий модуля одновременно, или ещё много куда менее вероятных вариантов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы