添加autoprefixer后NextAuth社交登录报错无法运行,该如何排查修复?
问题触发原因
1. 初始TypeError: Cannot destructure property 'id' of 'undefined'报错
你的NextAuth配置中providers数组存在多余的前置逗号,会生成包含undefined元素的数组:
providers: [ ,EmailProvider({...}) // 开头的逗号会让数组第一个元素为undefined ,GoogleProvider({...}) ]
next-auth内部遍历providers数组时,会尝试读取undefined元素的id属性,直接触发解构失败报错。你在安装autoprefixer后才出现该问题,大概率是安装过程中触发了依赖版本对齐,或你本地的代码格式化规则在安装前端工具后发生变化,自动插入了多余逗号。
2. 后续Package path ./providers is not exported报错
你修改配置时使用的import Providers from "next-auth/providers"不符合next-auth的导出规则:从你提供的package.json的exports字段可以看到,仅开放了./providers/*的匹配规则,要求必须精准导入单个provider(如next-auth/providers/google),不支持直接导入整个providers目录作为聚合对象使用。
修复方案
- 修正NextAuth配置的语法错误,删除providers数组中多余的前置逗号,恢复正确的单个provider导入方式,参考配置如下:
import NextAuth from "next-auth" import EmailProvider from 'next-auth/providers/email'; import GoogleProvider from "next-auth/providers/google"; export default NextAuth({ providers: [ EmailProvider({ server: process.env.EMAIL_SERVER, from: process.env.EMAIL_FROM, }), GoogleProvider({ clientId: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET, }) ], jwt: { encryption: true, }, secret: process.env.secret, callback: {}, pages: {} })
- 清除项目编译缓存后重启服务:
执行rm -rf .next && npm run dev,彻底清除之前的错误编译产物。 - 若问题仍存在,检查包管理器锁文件(package-lock.json/yarn.lock/pnpm-lock.yaml),确认next-auth版本与安装autoprefixer之前的版本一致,排除跨版本不兼容问题。
内容的提问来源于stack exchange,提问作者avnav99
相关产品推荐
相关产品推荐

