javascript - Next-Auth da error al iniciar sesión: "El manejador de API no debería devolver un valor, se recibió un objeto."
Estoy usando [email con [email y Typescript. Cada vez que uso la función signIn(), se realiza el inicio de sesión como de costumbre, pero luego imprime la siguiente línea en la consola del servidor: API handler no debería devolver un valor, se recibió un objeto. No estoy conectado después de hacer esto.
He revisado mi archivo [...nextauth].ts y no puedo encontrar ningún error. El código está abajo:
import clientPromise from "@/lib/mongodbadapter";
import { MongoDBAdapter } from "@next-auth/mongodb-adapter";
import NextAuth, { AuthOptions } from "next-auth"
import DiscordProvider from "next-auth/providers/discord";
import GitHubProvider from "next-auth/providers/github";
export const authOptions: AuthOptions = {
adapter: MongoDBAdapter(clientPromise),
providers: [
DiscordProvider({
clientId: process.env.DISCORD_CLIENT_ID!,
clientSecret: process.env.DISCORD_CLIENT_SECRET!
}),
GitHubProvider({
clientId: process.env.GITHUB_CLIENT_ID!,
clientSecret: process.env.GITHUB_CLIENT_SECRET!
})
]
}
export default NextAuth(authOptions)
He envuelto todos los elementos HTML en un SessionProvider, así:
export default function App({ Component, pageProps: { session, ...pageProps } }: AppProps) {
return <SessionProvider session={session}>
<Navbar />
<Component {...pageProps} />
</SessionProvider>
}
En mi index.ts, registro la sesión, así:
export async function getServerSideProps(ctx: any) {
return {
props: {
session: await getServerSession(ctx.req, ctx.res, authOptions)
}
}
}
El registro del servidor es este:
undefined
- wait compiling /api/auth/[...nextauth] (client and server)...
- event compiled successfully in 265 ms (63 modules)
API handler should not return a value, received object.
API handler should not return a value, received object.
undefined
Lo indefinido proviene de donde registro la sesión. La compilación es de que regreso a la página index.ts después de iniciar sesión.
Aunque la sesión no está definida, mi base de datos (estoy usando @next-auth/[email ) tiene los documentos relevantes de usuario y cuenta.
¿Qué necesito cambiar para evitar este error y que realmente me inicie sesión, o es un problema con Next-Auth que está fuera de mi control?
Editar: Confirmé que mi IP está permitida en mi instancia de MongoDB Atlas.
Respuesta #1
Tuve el mismo problema. Solo cambié [...nextauth].ts
de:
export default NextAuth(authOptions)
a:
const authHandler = NextAuth(authOptions);
export default async function handler(...params: any[]) {
await authHandler(...params);
}
Espero que ayude.
Lo que estamos haciendo aquí es inicializar NextAuth en su forma "avanzada" en lugar de usar su forma más simple. Puedes leer más al respecto en el enlace, pero te permite acceder a variables dentro de los objetos de solicitud y respuesta. Por ejemplo, podrías acceder a req.cookies.
Respuesta #2
Me enfrenté al mismo problema, y cuando volví a abrir el sitio web de Mongo-Atlas, mostró que mi dirección IP actual no estaba añadida, así que después de hacer clic en "agregar IP actual" el problema se resolvió.
