我试图建立一个网站,允许使用谷歌使用nextJS登录。但是,我在按下登录按钮后不断收到以下错误。
这是我目前拥有的Home Page
这是我一直收到的error
下面是相关的代码片段
"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(null);
const [toggleDropdown, setToggleDropdown] = useState(false);
useEffect(() => {
const initProviders = async () => {
const response = await getProviders();
setProviders(response);
}
initProviders();
}, [])
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'>Rate My Landlord</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条答案
按热度按时间qnzebej01#
在这一点上,我假设你已经遵循了JavaScript Mastery YouTube频道上的教程进行开发。
如果我的假设是正确的,那么很多人都遇到过这个问题,你可以在这里看到问题和不同的解决方案。
根据讨论,该错误与用户模型中用户名字段的正则表达式验证有关。您可能必须移除验证并删除数据库中的“users”集合才能修复错误。
还有其他建议。希望这对你有帮助。