Exenv
React's ExecutionEnvironment module extracted for use in other packages & components
Install / Use
/learn @JedWatson/ExenvREADME
exenv
React's ExecutionEnvironment module extracted for use in other packages & components.
Usage
npm install exenv --save
var ExecutionEnvironment = require('exenv');
// You now have...
ExecutionEnvironment.canUseDOM // is the DOM available? i.e window document etc.
ExecutionEnvironment.canUseWorkers // are Web Workers available?
ExecutionEnvironment.canUseEventListeners // are Events available? i.e addEventListener etc.
ExecutionEnvironment.canUseViewport // is there a viewport? i.e window.screen
Differences from React's ExecutionEnvironment
The ExecutionEnvironment lib in React 0.13 includes an isInWorker property, which is !canUseDOM. This is highly specific to React internals and probably (a) hacky and (b) not useful to other packages, so it has been left out. Please open an issue with your thoughts if you disagree or have a better idea.
Why?
A number of packages and components use React's private ExecutionEnvironment lib to detect available features, particularly to detect server-side rendering, e.g
canUseDOM = require('react/lib/ExecutionEnvironment').canUseDOM; // BAD
It is bad practice to use React internals and this is likely to be broken / disabled in the future.
Use this package instead!
Related Skills
node-connect
354.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
112.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
354.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
354.3kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
