我有这个问题,我无法找到解决方案,在任何其他论坛。
我的设置
第一个月NextAuth: v4.16.4
个npm: v8.19.2
个node: v18.12.1
个
错误发生时
此错误 * 仅在生产环境中发生 *。在开发环境中,一切正常。一旦我按下按钮转到登录页面,我得到的错误如下。登录,不显示我已登录,也不重定向到 Jmeter 板页面。只有当我切换到开发环境时,它才真正显示我已登录。我在浏览器中没有得到任何错误,我得到的唯一错误是你下面看到的那个。另外,访问http://localhost:3000/api/auth/session
,正确显示我的登录信息。
错误
[next-auth][error][CLIENT_FETCH_ERROR]
https://next-auth.js.org/errors#client_fetch_error fetch failed {
error: {
message: 'fetch failed',
stack: 'TypeError: fetch failed\n' +
' at Object.fetch (node:internal/deps/undici/undici:11118:11)\n' +
' at process.processTicksAndRejections (node:internal/process/task_queues:95:5)',
name: 'TypeError'
},
url: 'http://localhost:3000/api/auth/session',
message: 'fetch failed'
}
字符串
登录代码
{allProviders.map((provider, index) => {
const { id, name, Icon } = provider
return (
<div key={index}>
<button
aria-label="sign in"
className="inline-flex items-center w-max px-5 py-3 rounded-lg bg-slate-100 gap-4"
onClick={(e) => {
e.preventDefault()
signIn(id, { callbackUrl: '/dashboard' })
}}
>
<Icon size={24} />
{name}
</button>
</div>
)
})}
型
.env文件
NEXTAUTH_SECRET=******
NEXTAUTH_URL=http://localhost:3000
型
[...nextauth].js文件
providers: [
GithubProvider({
clientId: process.env.GITHUB_ID as string,
clientSecret: process.env.GITHUB_SECRET as string,
}),
GoogleProvider({
clientId: process.env.GOOGLE_ID as string,
clientSecret: process.env.GOOGLE_SECRET as string,
}),
],
pages: {
signIn: '/auth/signin',
},
secret: process.env.NEXTAUTH_SECRET as string,
callbacks: {
async jwt({ token, account }: any) {
if (account?.access_token) {
token.access_token = account.access_token
}
return token
},
async session({ session, token }: any) {
if (session?.user) {
session.user.id = token.sub
}
return session
},
},
型
我试过的和 * 没有 * 工作:
- 在env变量之前添加NEXT_PUBLIC。
- 删除了
auth
文件夹,只有signin.tsx
。 - 在执行signIn()之前添加了
e.preventDefault()
。 - 删除了
[..nextauth].ts
中的所有callbacks
。
1条答案
按热度按时间ahy6op9u1#
更新package.json,它将正常工作