NextAuth报错options.providers is not iterable,请求协助排查解决
解决NextAuth中
options.providers is not iterable错误 问题根源
你在调用NextAuth时传参方式错误,将配置对象authOptions嵌套进了另一个对象中传入,导致NextAuth无法读取到顶层的providers数组,从而抛出迭代错误。
修复方法
修改route.js中创建handler的代码,直接传入authOptions而非包裹在对象里:
原错误代码片段:
const handler = NextAuth({authOptions})
修改为:
const handler = NextAuth(authOptions)
完整修复后的代码:
import NextAuth from "next-auth" import GoogleProvider from "next-auth/providers/google"; import { MongoDBAdapter } from "@auth/mongodb-adapter" import client from "@/libs/mongoClient"; export const authOptions = { providers : [ GoogleProvider({ clientId: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET }) ], adapter: MongoDBAdapter(client), secret: process.env.NEXTAUTH_SECRET, }; // 直接传入配置对象 const handler = NextAuth(authOptions) export { handler as GET, handler as POST }
验证
重启开发服务器后,访问GET /api/auth/providers即可正常返回包含Google认证提供者的列表,错误会被修复。
内容的提问来源于stack exchange,提问作者Riddhi Dhawan
相关产品推荐
相关产品推荐

