我试图使一个nextjs网站和我使用提供商在那,但我的提供商是显示空的所有时间,我试图调试它与巴德和chatgpt的帮助,但是无助的。
这是我的Nav.jsx代码,在这个我有错误的提供者,提供者是空有人可以告诉我原因
"use client";
import Link from "next/link";
import Image from "next/image";
import { useEffect, useState } from "react";
import { signIn, signOut, useSession, getProviders } from "next-auth/react";
const Nav = () => {
const { data: session } = useSession();
const [providers, setProviders] = useState();
const [toggleDropdown, setToggleDropdown] = useState(false);
useEffect(() => {
(async () => {
const res = await getProviders();
setProviders(res);
})();
}, []);
return (
<nav className='flex-between w-full mb-16 pt-3'>
<Link href='/' className='flex gap-2 flex-center'>
<Image
src='/assets/images/logo.svg'
alt='logo'
width={30}
height={30}
className='object-contain'
/>
<p className='logo_text'>Promptopia</p>
</Link>
{/* Desktop Navigation */}
<div className='sm:flex hidden'>
{session?.user ? (
<div className='flex gap-3 md:gap-5'>
<Link href='/create-prompt' className='black_btn'>
Create Post
</Link>
<button type='button' onClick={signOut} className='outline_btn'>
Sign Out
</button>
<Link href='/profile'>
<Image
src={session?.user.image}
width={37}
height={37}
className='rounded-full'
alt='profile'
/>
</Link>
</div>
) : (
<>
{providers &&
Object.values(providers).map((provider) => (
<button
type='button'
key={provider.name}
onClick={() => {
signIn(provider.id);
}}
className='black_btn'
>
Sign in
</button>
))}
</>
)}
</div>
{/* Mobile Navigation */}
<div className='sm:hidden flex relative'>
{session?.user ? (
<div className='flex'>
<Image
src={session?.user.image}
width={37}
height={37}
className='rounded-full'
alt='profile'
onClick={() => setToggleDropdown(!toggleDropdown)}
/>
{toggleDropdown && (
<div className='dropdown'>
<Link
href='/profile'
className='dropdown_link'
onClick={() => setToggleDropdown(false)}
>
My Profile
</Link>
<Link
href='/create-prompt'
className='dropdown_link'
onClick={() => setToggleDropdown(false)}
>
Create Prompt
</Link>
<button
type='button'
onClick={() => {
setToggleDropdown(false);
signOut();
}}
className='mt-5 w-full black_btn'
>
Sign Out
</button>
</div>
)}
</div>
) : (
<>
{providers &&
Object.values(providers).map((provider) => (
<button
type='button'
key={provider.name}
onClick={() => {
signIn(provider.id);
}}
className='black_btn'
>
Sign in
</button>
))}
</>
)}
</div>
</nav>
);
};
export default Nav;
想知道为什么提供程序为空,并希望得到修复
1条答案
按热度按时间4bbkushb1#
请提供您的问题发生的更多上下文。
根据您的信息,这些可能是需要注意的事项:
1.添加nextAuth提供者,最初提供者将仅返回null,直到您使用某些特定提供者登录
1.查找处理下一个身份验证提供程序的路由处理程序
先试试这些,如果错误仍然发生,让我知道:)