Check if the current JavaScript environment is Node.js or a browser
It's no secret that JavaScript environments are not created equal, with differences in the available APIs, global objects, and even the language itself. This is why it's important to know the current environment in order to avoid errors and unexpected behavior.
Check if the current environment is Node.js
In order to determine if the current environment is Node.js, we can use the process
global object that provides information about the current Node.js process. We can check if process
, process.versions
and process.versions.node
are defined.
const isNode = () => typeof process !== 'undefined' && !!process.versions && !!process.versions.node; isNode(); // true (Node) isNode(); // false (browser)
Check if the current environment is a browser
Browsers environments, on the other hand, are known to always contain the window
and document
global objects. We can use this fact to determine if the current environment is a browser. The preferred way to check for the existence of a global object is to use the typeof
operator, as it allows us to check for the existence of a global object without throwing a ReferenceError
.
const isBrowser = () => ![typeof window, typeof document].includes('undefined'); isBrowser(); // true (browser) isBrowser(); // false (Node)