0



我的任务是为 React 应用程序实现服务器端渲染。我已经按照本教程进行操作:https ://scotch.io/tutorials/react-on-the-server-for-beginners-build-a-universal-react-and-node-app ,然后,按照确切的实际应用的步骤。一切都很好地实现了客户端渲染,但是当我继续使用服务器端渲染时,我收到以下错误:“引用错误:未定义窗口”
问题是应用程序使用了滚动魔术,即一个仅限客户端的库(注意:我在代码本身的任何滚动魔术引用中添加了条件“需要”,但我找不到绕过模块的方法)。
我考虑在客户端添加 scrollmagic 库,但是一旦我删除它,我就会从“require”语句中得到一个错误。
如果这是显而易见的事情,我深表歉意,但我是 JavaScript 新手,已经搜索了几天,但到目前为止一无所获。如果我可以提供任何其他信息,请告诉我!另外,如果您对我应该如何处理这个问题有任何建议,我会全力以赴!

最好的问候,
安德鲁

4

2 回答 2

1

window 对象是浏览器/客户端的属性,因此在服务器上执行 javascript 时您将无法访问它。诸如https://www.npmjs.com/package/window-or-global之类的库可以提供帮助,并添加条件逻辑以在执行依赖于它的代码之前检查窗口对象。

于 2018-02-12T02:03:33.920 回答
1

除了@sconway 建议在调用这些客户端方法时手动检查窗口是否存在之外,我过去使用的另一种方法是将该代码放入componentDidUpdate生命周期方法中。

保证不会在服务器上调用此方法,仅在客户端上调用。

于 2018-02-13T03:44:33.170 回答