Next-Auth错误-类型错误:在Object.fetch获取失败

8iwquhpp  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(172)

我有这个问题,我无法找到解决方案,在任何其他论坛。

我的设置

第一个月
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

相关问题