【问题标题】:babel-node error 'Reference error: window is not defined'babel-node 错误'参考错误:未定义窗口'
【发布时间】:2018-02-11 20:41:02
【问题描述】:



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

最好的问候,
安德鲁

【问题讨论】:

    标签: reactjs server-side-rendering referenceerror scrollmagic babel-node


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      保证不会在服务端调用这个方法,只在客户端调用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-30
        • 2021-08-16
        • 2023-03-14
        • 2018-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多