Next.js项目handleLogin函数报':' expected.ts(1005)错误求助
问题原因及修复方案
这个TypeScript错误是因为可选链操作符语法错误:你写的response?error不符合规范,正确的可选链写法应该是response?.error(问号后必须跟一个点)。
修复后的完整代码
const handleLogin = useCallback(async (credentials) => { if (!credentials.email) { return setError('email is missing') } if (!credentials.password) { return setError('password is missing') } try { setLoading(true) const response: SignInResponse | undefined = await signIn('credentials', { ...credentials, redirect: false }) // 修复可选链语法错误 if (response?.error && response.error === 'CredentialsSignin') { setError('email or password are wrong') } else { setError('') router.push('/') } } catch { setError('login failed') } finally { setLoading(false) console.log(error) } }, [router, error])
补充说明
可选链操作符?.用于安全访问可能为undefined或null的对象属性,语法要求必须是对象?.属性的形式。你之前的写法缺少了问号后的点,导致TypeScript无法识别语法,从而抛出':' expected的错误。
内容的提问来源于stack exchange,提问作者JackFrost
相关产品推荐
相关产品推荐

