NextAuth 电子邮件提供商在 /api/auth/* 上返回找不到页面 + 404 + Vercel 上的客户端获取错误

Sci*_*any 5 javascript next.js vercel next-auth

问题

我正在尝试使用 NextAuth 的电子邮件提供商来创建身份验证端点。它在本地工作。但是,在登录我们的实时网站时,我被重定向到“404 | 页面未找到”。

几天前,这段代码也可以在 Vercel 上运行。

代码

以下是身份验证处理程序和登录按钮。

页面/api/auth/[...nextauth].ts

import NextAuth from 'next-auth'
import { type NextAuthOptions } from 'next-auth'
import EmailProvider from 'next-auth/providers/email'

import { prisma } from '@onlyhelper/db'
import { PrismaAdapter } from '@next-auth/prisma-adapter'

export const authOptions: NextAuthOptions = {
  // Configure one or more authentication providers
  adapter: PrismaAdapter(prisma),
  providers: [
    EmailProvider({
      server: process.env.ALL_EMAIL_SERVER,
      from: 'hello@domainname.com'
    })
  ],
  secret: 'secret',
  session: {},
  callbacks: {
    session({ session, user }) {
      session.user.id = user.id
      return session
    }
  }
}

export default NextAuth(authOptions)
Run Code Online (Sandbox Code Playgroud)

页面/login.tsx

import { signIn } from 'next-auth/react'


return (
  <button onClick={() => signIn()}>
    Sign In
  </button>
)
Run Code Online (Sandbox Code Playgroud)

错误

在控制台的“找不到页面”页面中打印以下内容。

GET https://domainname/api/auth/error 404

GET https://domainname/api/auth/session 404

[next-auth][error][CLIENT_FETCH_ERROR] 

https://next-auth.js.org/errors#client_fetch_error Unexpected token '<', "<!DOCTYPE "... is not valid JSON

POST https://app.onlyhelper.com/api/auth/_log 404 
Run Code Online (Sandbox Code Playgroud)

我尝试过的

  • 在 Google 和 StackOverflow 上搜索类似问题

  • 将 NEXTAUTH_URL 环境变量设置为实时站点上的生产 url

  • 将 NEXTAUTH_SECRET 设置为某个字符串

  • 确保在会话回调上返回“会话”对象

  • 按照遇到类似问题的人的建议将 next 和 nextauth 降级到某些版本

  • 确保 [...nextauth].ts 位于 /pages/api/auth 文件夹中

  • 确保电子邮件服务器环境变量正确

  • 将本地实例指向生产数据库并成功登录,以确认这不是数据库配置/损坏的数据问题

这很奇怪,因为这曾经工作得很好,而且在本地仍然可以工作。想知道是否是 Vercel 问题?

更新

似乎我所有的 API 路由都返回 404 | 找不到网页。我仍然不知道是什么原因造成的。

预先感谢您的所有帮助!