window-or-global
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
Install
$ npm i window-or-global
Usage
import root from 'window-or-global'
React example
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.
Unit-testing example
You can find a complete test example here. The test passes of course, just type
$ npm test
in your terminal.
License
MIT © Purpose Industries