You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextAuth凭证认证语法错误求助:预期分号问题

NextAuth凭证认证语法错误排查

我在Next.js中使用NextAuth搭建认证系统,实现凭证认证功能时出现语法错误,提示“预期分号”和“预期',',却得到';'”,反复检查代码未能定位问题,以下是我的代码及错误信息:

import NextAuth,{ NextAuthOptions }  from 'next-auth'
import GoogleProvider from 'next-auth/providers/google'
import GithubProvider from 'next-auth/providers/github'
import CredentialsProvider from "next-auth/providers/credentials";
// import Providers from 'next-auth/providers'
// import sessionProvider from 'next-auth'
// const client_Id="207449855842-gv24ltosjj4ahf1r7lelc4jiii5qsqe8.apps.googleusercontent.com"
// const client_secret="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"
export default NextAuth({
  
  providers: [
    GoogleProvider({
      client_Id:process.env.GOOGLE_ID,
      clientSecret:process.env.GOOGLE_SECRET,
    
    }),
    GithubProvider({
      clientId: process.env.GITHUB_ID,
      clientSecret: process.env.GITHUB_SECRET,
    }),
    CredentialsProvider({
      type: "Credentials",
      credentials: {
        // email: { label: "Email address", type: "text" },
        // password: { label: "Password", type: "password" }
      },
      async authorize(credentials, req) {
        
          const { email, password } = credentials as {
          email: string;
          password: string;
        };
        if (email !== "john@gmail.com" || password !== "1234") {
          throw new Error("invalid credentials");
        }
        return {
          id: "1234",
          name: "John Doe",
          email: "john@gmail.com",
          role: "admin",
        };
  
       
      }
    }),
    callbacks: {
      jwt(params) {
        // update token
        if (params.user?.role) {
          params.token.role = params.user.role;
        }
        // return final_token
        return params.token;
      },
    },
    session: {
      strategy: "jwt",
    },
    pages: {
      signIn: "/login",
      
    },
    
  ],
  secret:"[6j2Ld_PiUl3etQENg0swsJnuMaAJ]",
  debug:true
  
   
})

错误信息:

Error:
  x 预期分号
    ,-[C:\Users\acer\Desktop\next\fundraiser\pages\api\auth\[...nextauth].js:26:1]
 26 |       },
 27 |       async authorize(credentials, req) {
 28 |
 29 |           const { email, password } = credentials as {
    :                                                   ^^
 30 |           email: string;
 31 |           password: string;
 31 |         };
    `----

  x 预期',',却得到';'
    ,-[C:\Users\acer\Desktop\next\fundraiser\pages\api\auth\[...nextauth].js:29:1]
 29 |           const { email, password } = credentials as {
 30 |           email: string;
 31 |           password: string;
 32 |         };
    :          ^
 33 |         if (email !== "john@gmail.com" || password !== "1234") {
 34 |           throw new Error("invalid credentials");
 34 |         }
    `----

Caused by:
    语法错误

错误原因及修复方案

  1. JavaScript文件误用TypeScript语法
    你的文件是.js后缀,但代码中使用了TypeScript专属的类型断言credentials as { email: string; password: string; },JavaScript不支持该语法。可以二选一修复:

    • 移除类型断言,直接解构:const { email, password } = credentials;
    • 将文件后缀改为.ts,确保项目已配置TypeScript支持
  2. 配置项层级错误
    callbacks、session、pages属于NextAuth配置对象的顶级属性,你错误地将它们放在了providers数组内部,需要移到数组外与providers同级。

  3. 参数名拼写错误
    GoogleProvider的配置参数client_Id拼写错误,正确应为clientId,否则会导致Google登录功能失效。

修复后的完整代码

import NextAuth from 'next-auth'
import GoogleProvider from 'next-auth/providers/google'
import GithubProvider from 'next-auth/providers/github'
import CredentialsProvider from "next-auth/providers/credentials";

export default NextAuth({
  providers: [
    GoogleProvider({
      clientId: process.env.GOOGLE_ID,
      clientSecret: process.env.GOOGLE_SECRET,
    }),
    GithubProvider({
      clientId: process.env.GITHUB_ID,
      clientSecret: process.env.GITHUB_SECRET,
    }),
    CredentialsProvider({
      type: "Credentials",
      credentials: {
        // email: { label: "Email address", type: "text" },
        // password: { label: "Password", type: "password" }
      },
      async authorize(credentials, req) {
        const { email, password } = credentials;
        if (email !== "john@gmail.com" || password !== "1234") {
          throw new Error("invalid credentials");
        }
        return {
          id: "1234",
          name: "John Doe",
          email: "john@gmail.com",
          role: "admin",
        };
      }
    })
  ],
  callbacks: {
    jwt(params) {
      if (params.user?.role) {
        params.token.role = params.user.role;
      }
      return params.token;
    },
  },
  session: {
    strategy: "jwt",
  },
  pages: {
    signIn: "/login",
  },
  secret:"[6j2Ld_PiUl3etQENg0swsJnuMaAJ]",
  debug:true
})

内容的提问来源于stack exchange,提问作者jen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:31:01