Use this module to get the global object both on server and client side.
No more window is not defined
errors just peace and flowers.
The code is borrowed from megawac/underscore@365311c.
Advantages:
- You can easily mock it by mockery or proxyquire in your tests
- It's really useful in case of universal (or isomorphic) code, for example, when you'd like to render a React component both on client and server side
$ npm i window-or-global
import root from 'window-or-global'
components/my-component.jsx:
import React, { Component } from 'react'
// in node, you'll get the global object instead of crashing by an error
import root from 'window-or-global'
class MyComponent extends Component {
// this method is only invoked in the browser environment
componentDidMount() {
root.addEventListener(/*...*/)
}
componentWillUnmount() {
root.removeEventListener(/*...*/)
}
render() {}
}
// Voilà. Enjoy your universal react component! ;)
// No more 'window is not defined' errors when you render your component
// on server side.
You can find a complete test example here. The test passes of course, just type
$ npm test
in your terminal.
MIT © Purpose Industries