有人在 auth.js 回调中遇到过 typeError : immutable 吗?

问题描述 投票:0回答:1
export const {
  handlers: { GET, POST },
  auth,    
  signIn,        
  signOut,
} = NextAuth({
  providers: [
    GitHub({         
      clientId: process.env.GITHUB_ID,    
      clientSecret: process.env.GITHUB_SECRET,
    }),
  ],
  callbacks: {
    async signIn({ user, account, profile }) {
      await connectToDb;
      console.log(user.email);
      const dbUsers = await User.find();
      console.log(dbUsers);

      return true;
    },
  },
});    

每当我使用

 console.log(user.email);
      const dbUsers = await User.find();
      console.log(dbUsers);

在回调中我面临 TypeError: Immutable

我该如何解决。连接数据库时它仍然有效。但是当涉及到

const dbUsers = await User.find()
时,它向我显示上述错误。我不知道如何避免我正在观看 YouTube 上的教程,并且我在练习中实现了打字稿。

mongoose next.js next-auth
1个回答
0
投票

出现此错误的原因是 NextAuth 与 Edge 兼容,但某些数据库适配器(例如 Prisma)不兼容。如果您的任何文件配置为在 Edge 上运行,您可能会遇到此错误。

解决方案是在app/api/[...nextauth]文件夹中找到route.ts文件并将运行时设置为nodejs或从route.ts文件中完全删除运行时变量。

您的 app/api/auth/[...nextauth]/route.ts 应类似于以下内容:

从“@/auth”导出{ GET, POST }; 导出常量运行时=“nodejs”; // 您可以选择删除它,但如果将其设置为“edge”,则在使用边缘不兼容的适配器时会出现错误。

© www.soinside.com 2019 - 2024. All rights reserved.