Next-auth signOut按钮用环境变量传callbackUrl失效问题求助
解决方案
问题根源是Next.js客户端组件无法直接访问非NEXT_PUBLIC_前缀的环境变量。默认情况下,Next.js只会将以NEXT_PUBLIC_开头的环境变量注入到客户端代码中,其他变量仅在服务器端可用,所以你当前的AUTH0_SIGNOUT_CALLBACK_URL在客户端组件里是undefined,导致回调URL失效。
解决步骤:
修改.env.local中的变量名
将环境变量名加上NEXT_PUBLIC_前缀,确保客户端能读取到:NEXT_PUBLIC_AUTH0_SIGNOUT_CALLBACK_URL=http://localhost:3000更新Nav.jsx中的变量引用
同步修改代码中的环境变量名称:'use client' import { signOut } from 'next-auth/react' import Link from 'next/link' const signOutUrl = process.env.NEXT_PUBLIC_AUTH0_SIGNOUT_CALLBACK_URL const Nav = () => { return ( <nav> <button type="button" onClick={() => signOut({ callbackUrl: signOutUrl })} className="outline_btn" > Sign Out </button> <Link href="/profile" className="outline_btn"> Profile </Link> </nav> ) } export default Nav重启开发服务器
环境变量修改后必须重启Next.js开发服务器,新的变量才能被加载生效。
内容的提问来源于stack exchange,提问作者Nadun Perera
相关产品推荐
相关产品推荐

