error 'document' is not defined : eslint / React

ReactjsJestjsJsxJsdom

Reactjs Problem Overview


I'm building a React app, with create-react-app.

I got the following error when running ESLint:
8:3 error 'document' is not defined no-undef.

My app runs without error, but I got this ESLint error in 2 files. See one of those .jsx files and my ESLint configuration.

index.jsx:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import './index.css';

ReactDOM.render(
  <App />,
  document.getElementById('root'),
);

eslintrc.js:

module.exports = {
  "extends": "airbnb",
  "plugins": [
      "react",
      "jsx-a11y",
      "import"
  ],
  "env": {
    "jest": true
  }
};

How can I fix this ? For the moment I will simply ignore both files ... but I'd rather find a long term solution.

Reactjs Solutions


Solution 1 - Reactjs

Add "browser": true your env to include global variables (like document, window, etc.)

See the ESLint environment documentation for more information.

Solution 2 - Reactjs

set an env property in you eslint.rc file, e.g.

{
    "env": {
        "browser": true,
        "node": true
    }
}

Solution 3 - Reactjs

In your package.json, specify the test environment for jest as "jsdom" as follows:

  "jest": {
    "testEnvironment": "jsdom"
  }

I faced the same issue and it worked well for me.

Solution 4 - Reactjs

If you have .eslintrc.json file then add following code snippet.

{
    ...otherSettings,
    "env": {
		"browser": true,
		"node": true
	}
}

if you do not have .eslintrc.json then you can add these settings in you package.json file.

{
    ...otherSettings,
    "eslintConfig": {
      "globals": {
        "window": true
      }
    }
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionThomas SauvajonView Question on Stackoverflow
Solution 1 - ReactjsLucasView Answer on Stackoverflow
Solution 2 - ReactjsHom BahraniView Answer on Stackoverflow
Solution 3 - ReactjsPeterView Answer on Stackoverflow
Solution 4 - ReactjsAjay RawatView Answer on Stackoverflow