Vite配置SSR时如何正确处理客户端和服务器端的模块分离?
我在用 Vite 搭建 SSR 项目时,发现有些模块只能在客户端运行(比如用到 window 对象),但构建时服务端也会尝试打包这些代码,导致报错。我试过用 import.meta.env.SSR 判断环境,但似乎在构建阶段就出错了。
比如下面这段代码,在服务端渲染时就会报 ReferenceError: window is not defined:
export function useClientOnlyHook() {
if (import.meta.env.SSR) return;
const width = window.innerWidth; // 服务端没有 window
return width;
}
暂无解答