Next Auth提示‘client_id is required’,.env配置读取异常求助
问题描述
用NextAuth做Google登录集成时遇到了奇怪的问题:直接把Google客户端ID和密钥写死在代码里能正常运行,但通过process.env读取.env文件里的对应变量时,就会弹出client_id is required的错误。
相关配置
[...nextauth].js代码
import NextAuth from "next-auth" import GoogleProvider from "next-auth/providers/google" export default NextAuth({ providers: [ GoogleProvider({ clientId: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET }) ], secret: process.env.JWT_SECRET })
.env文件内容
GOOGLE_CLIENT_ID = qwertclientid GOOGLE_CLIENT_SECRET = qwertyclientsecret NEXTAUTH_URL=http://localhost:3000 JWT_SECRET=qwertysecret
报错信息
error: { message: 'client_id is required', providerId: 'google', message: 'client_id is required' }
解决方案
- 去掉.env变量的空格:你现在.env里的变量是
GOOGLE_CLIENT_ID = qwertclientid,等号两边的空格会导致读取到的变量值带无效空格,直接改成GOOGLE_CLIENT_ID=qwertclientid(等号前后都不要留空格)。 - 重启开发服务器:修改.env文件后必须重启Next.js的开发服务,不然新的环境变量不会被加载生效。
- 确认.env文件位置:保证.env文件放在项目根目录(和package.json同级),别丢到src或其他子文件夹里,Next.js只会自动读取根目录的.env文件。
- 验证变量加载状态:可以在[...nextauth].js里临时加一行
console.log(process.env.GOOGLE_CLIENT_ID),重启服务后看控制台输出,要是输出undefined或者带空格的字符串,就说明变量没加载正确。
内容的提问来源于stack exchange,提问作者Robin Banks
相关产品推荐
相关产品推荐

