ESLint - "window" 未定义。如何在 package.json 中允许全局变量

ESLint - "window" is not defined. How to allow global variables in package.json

我正在为全局 window 对象分配一个 属性,但是当我 运行 eslint 时,我得到这个:

"window" is not defined

我看到这个here in the eslint docs:

the following defines window as a global variable for code that should not trigger the rule being tested:

valid: [
  {
    code: "window.alert()",
    globals: [ "window" ]
  }
]

我试过将类似这样的内容添加到 package.json 文件中以使 eslint 允许 "window" 作为全局变量,但我一定是做错了什么。从文档看来我可能需要在一个单独的文件中做这样的事情,但是有没有办法在 package.json 文件中定义一些允许的全局变量?

我在这个页面上找到它:http://eslint.org/docs/user-guide/configuring

在 package.json 中有效:

"eslintConfig": {
  "globals": {
    "window": true
  }
}

有一个内置 environment: browser,其中包括 window

示例.eslintrc.json

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

更多信息:https://eslint.org/docs/user-guide/configuring/language-options#specifying-environments

另见下文

在项目根目录添加.eslintrc

{
  "globals": {
    "document": true,
    "foo": true,
    "window": true
  }
}

如果您正在使用 Angular,您可以通过以下方式取消它:

"env": {
    "browser": true,
    "node": true
},
"rules" : {
    "angular/window-service": 0
 }

您的 .eslintrc.json 应包含以下文字。
这样 ESLint 就知道你的全局变量了。

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

我知道他没有要求 inline 版本。但是由于这个问题有将近 10 万次访问,而我在这里寻找它,我将把它留给下一个编码员:

确保 ESLint 不是 运行 带有 --no-inline-config 标志(如果这听起来不熟悉,你可能会很高兴去)。然后,将其写入您的代码文件(为了清晰和约定,它写在文件的顶部,但它可以在任何地方工作):

/* eslint-env browser */

这会告诉 ESLint 您的工作环境是浏览器,因此现在它知道浏览器中可用的内容并相应地进行调整。

有很多environments,可以同时声明多个,比如内联:

/* eslint-env browser, node */

如果您几乎总是使用特定的环境,最好在您的 ESLint's config file 中设置它并忘记它。

来自 their docs:

An environment defines global variables that are predefined. The available environments are:

  • browser - browser global variables.
  • node - Node.js global variables and Node.js scoping.
  • commonjs - CommonJS global variables and CommonJS scoping (use this for browser-only code that uses Browserify/WebPack).
  • shared-node-browser - Globals common to both Node and Browser.

[...]

除了环境,您还可以让它忽略任何您想要的东西。如果它警告您使用 console.log() 但您不想收到警告,只需内联:

/* eslint-disable no-console */

您可以查看 the list of all rules,包括 最佳编码实践

的推荐规则