我在一个nextjs应用上通过localstorage设置了一个身份验证检查,如下所示:
'use client'
const router = useRouter();
const [auth, setAuth] = useState<string | null>(null);
const checkAuth = () => {
return localStorage.getItem('auth');
}
useEffect(() => {
setAuth(checkAuth());
}, []);
if (!auth) {
router.push('/admin/login');
return;
}
return <div>...</div>
字符串
问题是,当我构建项目时,我得到以下错误:ReferenceError:位置未在AdminPage(admin/page.tsx:260:16)定义
请注意,我也尝试在访问localstorage之前检查是否未定义窗口对象,但错误仍然相同。是否有其他方法可以从localstorage检查auth项,以防止未连接的用户访问此页面并将其重定向到登录页面?
1条答案
按热度按时间cgvd09ve1#
您需要为客户端组件使用“use client”指令。
将
"use client"
作为包含此组件的文件的第一行。