Node.js中的"窗口未定义"错误

Saw*_*oes 15 node.js reactjs webpack webpack-dev-server

我知道windowNode.js中不存在,但我在客户端和服务器上使用React和相同的代码.我用来检查是否window存在的任何方法都会阻止我:

未捕获的ReferenceError:未定义窗口

我如何解决我不能做的事实window && window.scroll(0, 0)

Jef*_*iks 19

Sawtaytoes得到了它.我会在componentDidMount()中运行你拥有的任何代码并用它包围它:

if (typeof(window) !== 'undefined') {
  // code here
}
Run Code Online (Sandbox Code Playgroud)

如果在React渲染组件的时候仍然没有创建窗口对象,那么在组件渲染之后总是可以运行代码一小段时间(并且窗口对象肯定是在那时创建的)因此用户不能分辨其中的不同之处.

if (typeof(window) !== 'undefined') {
    var timer = setTimeout(function() {
        // code here
    }, 200);
}
Run Code Online (Sandbox Code Playgroud)

我建议不要在setTimeout中放置状态.


Saw*_*oes 5

这将为您解决该问题:

typeof(window) === 'undefined'
Run Code Online (Sandbox Code Playgroud)

即使未定义变量,也可以使用typeof()它进行检查。