# How to solve the document is not defined error

> Learn how to fix the 'document is not defined' error in Node.js or Next.js: document is browser-only, so guard it with a typeof window check.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2022-05-04 | Topics: [JavaScript](https://flaviocopes.com/tags/js/) | Canonical: https://flaviocopes.com/error-document-not-defined/

Here's how to fix the "referenceerror: document is not defined" error that you might have in [Node.js](https://flaviocopes.com/nodejs/) or with a tool like [Next.js](https://flaviocopes.com/nextjs/).

`document` is an object that's made available by the browser, and it's not available in a server-side [JavaScript](https://flaviocopes.com/javascript/) environment.

I describe the `document` object is details in my extensive [DOM Document Object Model guide](https://flaviocopes.com/dom/#the-document-object).

With [Node.js](https://flaviocopes.com/nodejs/) in particular there's no way to workaround the problem - you must find the particular place where `document` is used, and revisit the code to figure out *why* you are accessing the `document` object.

You are running frontend code in a backend environment.

In [Next.js](https://flaviocopes.com/nextjs/) you can fix this problem by wrapping the code you run in a conditional.

The code might be running in both situations - frontend, when you navigate to a page using a link, and server-side if you require server-side into your page, for example by running `getServerSideProps()`.

In this case, you can limit the reference to `document` into a conditional that checks if the `window` object is available, like this:

```js
if (typeof window !== 'undefined') {
  //here `window` is available, so `window.document` (or simply `document`) is available too
}
```

And this will fix your problem, since you only run anything inside the conditional in a browser environment.
