服务端渲染支持
seekcx opened this issue · comments
-
版本号: callapp-lib@3.1.3
-
遇到的问题及复现步骤:
在 next 中直接使用会报错,问题出在 browser.ts 的 navigator 上,是否考虑可以写成懒访问的方式,来避免服务端上直接报错。
- 期望的效果:
支持服务端渲染。
先加个判断吧,只有客户端才加载这个模块,我用的nuxt,也有这个问题
几种解决办法:
- 实现一个区分客户端服务端的变量,在服务端场景下,不做实例化。因为服务端不做实例化,只在客户端实例化的场景其实是有一些的。
- 在 componentDidMount 或者 useEffect 中实例化
- 使用 jsdom
const { JSDOM } = require('jsdom')
const dom = new JSDOM('<!doctype html><html><body></body></html>', { url: 'http://localhost' })
global.window = dom.window
global.navigator = window.navigator
后续会通过 global 和 window 判断内置服务端渲染支持