Vite配置SSR时如何正确处理客户端和服务器端的模块分离?

端木蕴轩 阅读 4

我在用 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;
}
我来解答 赞 2 收藏
二维码
手机扫码查看
暂无解答

暂无解答