这个 Next JS 身份验证表达式在 Typescript 文件中不可调用?

use*_*666 3 typescript reactjs next.js next-auth

我正在为我的 Next js 应用程序创建一个登录方法,并使用 GitHub 存储库提供的推荐文档。

但是,当我到达 auth 文件夹步骤时,我收到此错误。对于登录提供商。

在 [...nextauth].ts 中

This expression is not callable.
  Type 'typeof import("/Users/farishtawazir/Desktop/template/next-auth")' has no call signatures.ts(2349)

Run Code Online (Sandbox Code Playgroud)

我不明白为什么,因为我已按照文档进行操作,但仍然收到此错误

这是文件代码

import NextAuth from 'next-auth'
import Auth0Provider from 'next-auth/providers/auth0'
import FacebookProvider from 'next-auth/providers/facebook'
import GithubProvider from 'next-auth/providers/github'
import GoogleProvider from 'next-auth/providers/google'
import TwitterProvider from 'next-auth/providers/twitter'
// import AppleProvider from "next-auth/providers/apple"
// import EmailProvider from "next-auth/providers/email"

// For more information on each option (and a full list of options) go to
// https://next-auth.js.org/configuration/options
export default NextAuth({
  // https://next-auth.js.org/configuration/providers/oauth
  providers: [
    /* EmailProvider({
         server: process.env.EMAIL_SERVER,
         from: process.env.EMAIL_FROM,
       }),
    // Temporarily removing the Apple provider from the demo site as the
    // callback URL for it needs updating due to  changing domains
      
    Providers.Apple({
      clientId: process.env.APPLE_ID,
      clientSecret: {
        appleId: process.env.APPLE_ID,
        teamId: process.env.APPLE_TEAM_ID,
        privateKey: process.env.APPLE_PRIVATE_KEY,
        keyId: process.env.APPLE_KEY_ID,
      },
    }),
    */
    FacebookProvider({
      clientId: process.env.FACEBOOK_ID,
      clientSecret: process.env.FACEBOOK_SECRET,
    }),
    GithubProvider({
      clientId: process.env.GITHUB_ID,
      clientSecret: process.env.GITHUB_SECRET,
    }),
    GoogleProvider({
      clientId: process.env.GOOGLE_ID,
      clientSecret: process.env.GOOGLE_SECRET,
    }),
    TwitterProvider({
      clientId: process.env.TWITTER_ID,
      clientSecret: process.env.TWITTER_SECRET,
    }),
    Auth0Provider({
      clientId: process.env.AUTH0_ID,
      clientSecret: process.env.AUTH0_SECRET,
      issuer: process.env.AUTH0_ISSUER,
    }),
  ],
  theme: {
    colorScheme: 'light',
  },
  callbacks: {
    async jwt({ token }: unknown) {
      token.userRole = 'admin'
      return token
    },
  },
})

Run Code Online (Sandbox Code Playgroud)

gri*_*Flo 7

您必须"esModuleInterop": true在 tsconfig.json 中设置为 true

或者你也可以尝试:

import * as next-auth from 'next-auth';
Run Code Online (Sandbox Code Playgroud)

编辑:

import NextAuth from 'next-auth';从文件导入next-auth.d.ts

我认为您应该将文件移至本文档中所述的类型文件夹https://next-auth.js.org/getting-started/typescript#module-augmentation

如果您重命名/删除文件,错误就会消失

  • @Beikeni 嘿,我这里也遇到同样的问题。也许最近发生了什么变化?您是否尝试过降级您的下一个身份验证版本?即我使用的是 4.22.2 版本,并将其更改为 4.21.0,错误消失了。 (2认同)