错误'document'未定义:eslint/React

Tho*_*jon 28 jsx jsdom reactjs jestjs

我正在使用create-react-app构建一个React应用程序.

运行ESLint时出现以下错误:
8:3 error 'document' is not defined no-undef.

我的应用程序运行没有错误,但我在2个文件中得到此ESLint错误.请参阅其中一个.jsx文件和我的ESLint配置.

index.jsx:

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

ReactDOM.render(
  <App />,
  document.getElementById('root'),
);
Run Code Online (Sandbox Code Playgroud)

eslintrc.js:

module.exports = {
  "extends": "airbnb",
  "plugins": [
      "react",
      "jsx-a11y",
      "import"
  ],
  "env": {
    "jest": true
  }
};
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题 ?目前我只会忽略这两个文件......但我宁愿找到一个长期的解决方案.

Luc*_*cas 60

添加"browser": true您的env包括全局变量(如文件,窗口等)

有关更多信息,请参阅ESLint环境文档.

  • @zishe参见OP,在eslintrc.js中有一个"env"属性.请参阅ESLint文档以了解如何配置它https://eslint.org/docs/user-guide/configuring (3认同)
  • 目前尚不清楚该怎么办,在哪里添加,什么文件? (2认同)

Hom*_*ani 13

在您的eslint.rc文件中设置一个env属性,例如

{
    "env": {
        "browser": true,
        "node": true
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 虽然@Locus 的答案是好的,但这是一个更好的解决方案,因为它不依赖于链接(可能会在当天损坏),并且它描述了解决问题的步骤 (2认同)

Aja*_*wat 8

如果您有.eslintrc.json文件,请添加以下代码片段。

{
    ...otherSettings,
    "env": {
        "browser": true,
        "node": true
    }
}
Run Code Online (Sandbox Code Playgroud)

如果没有,.eslintrc.json您可以在文件中添加这些设置package.json

{
    ...otherSettings,
    "eslintConfig": {
      "globals": {
        "window": true
      }
    }
}
Run Code Online (Sandbox Code Playgroud)


Vis*_*ati 7

在您的中package.json,指定用于笑话的测试环境,"jsdom"如下所示:

  "jest": {
    "testEnvironment": "jsdom"
  }
Run Code Online (Sandbox Code Playgroud)

我遇到了同样的问题,对我来说效果很好。