您的位置:首页 > 教育 > 培训 > b2c购物平台_湖南省居民健康卡二维码下载_如何提高网站seo排名_大数据培训班需要多少钱

b2c购物平台_湖南省居民健康卡二维码下载_如何提高网站seo排名_大数据培训班需要多少钱

2025/7/12 16:58:48 来源:https://blog.csdn.net/qq_73917015/article/details/144067983  浏览:    关键词:b2c购物平台_湖南省居民健康卡二维码下载_如何提高网站seo排名_大数据培训班需要多少钱
b2c购物平台_湖南省居民健康卡二维码下载_如何提高网站seo排名_大数据培训班需要多少钱

问题产生的原因

在 Next.js 中,“window is not defined” 错误通常出现在服务器端渲染(Server - Side Rendering,SSR)的代码中。这是因为window对象是浏览器环境中的全局对象,在服务器端没有window这个概念。例如,当你在 Next.js 的getServerSideProps或其他在服务器端执行的函数中尝试访问window相关的代码时,就会出现这个错误。
主要还是服务器需要运行代码生成html自然可能会在服务器端调用浏览器环境的API

解决方案

  1. 使用条件判断
    可以通过判断typeof window!== 'undefined’来确保代码只在浏览器环境中执行。例如:
export function setItem(key: string, value: object) {if (typeof window !== 'undefined') window.localStorage.setItem(key, JSON.stringify(value));
}
export function getItem(key: string) {const value = typeof window !== 'undefined' ? window.localStorage.getItem(key) || "{}" : "{}";return JSON.parse(value);
}
  1. 将代码移到useEffect钩子中(在函数组件中)
    如果是在函数组件中,并且是使用 React Hooks 的情况,可以将依赖于window的代码放在useEffect钩子内。useEffect中的代码会在组件挂载后在浏览器环境中执行。
  useEffect(()=>{const article=getItem('article')setHtml(article?.content||'')setTitle(article?.title||'标题')setType(article?.type||1)},[])

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com