window 在使用 React 服务器渲染时未定义

window is undefined when use react server rendering

我正在使用服务器渲染进行 React 项目。我发现我不能使用 window(/location/localStorage...)。它会在服务器渲染进程中崩溃。此外,如果我使用仅适用于浏览器的库,它也会崩溃,甚至 import/require 只有库。测试是一切可用的,有时我必须编写更多代码来处理服务器渲染。它很脏,让我很累。还有其他解决方法吗?

我今天遇到了关于 "Library only available for browser" 的相同问题,即使用 window 的问题(在我的例子中是 react-chartjs-2)。

深入挖掘后,您可以使用以下 NPM 包修复它:https://www.npmjs.com/package/window-or-global

如果您不想使用外部包,您还可以检查 windows 是否在您的 server.js 中定义,如果没有则创建一个全局 window 变量:

if (typeof(window) == 'undefined') global.window = new Object();