写项目的时候要求在二开项目上开启ssr,配置开启后一直报错window(localStorege、document) is not defined ,多方搜索有人说:在mounted生命周期中用localStorage就可以了,但是主体没有解决,大部分是操作dom的问题。
由于 nextjs 是服务端渲染,它会预渲染页面后生成 HTML,然后再将其发送给客户端,因此在渲染时无法识别 window/document 浏览器的对象方法。
尝试最简单的方案是用if (process.client) {}包起来即可。
if (process.client) {
const windowWidth = ref(window.innerWidth)
if (windowWidth.value >= 1200) {
return '530px'
} else if (windowWidth.value >= 1024 && windowWidth.value < 1200) {
return '460px'
}
}
if (process.client)
: 这段代码检查当前环境是否为客户端(即在浏览器中)。就比如问题中访问 window
对)只能在客户端运行。