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

che*_*n99 174 eslint

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

"窗口"未定义

在eslint docs中看到了这个:

以下将window定义为不应触发正在测试的规则的代码的全局变量:

valid: [
  {
    code: "window.alert()",
    globals: [ "window" ]
  }
]
Run Code Online (Sandbox Code Playgroud)

我已经尝试将这样的东西添加到package.json文件中以使eslint允许"window"作为全局变量,但我必须做错事.从文档看来,我可能需要在单独的文件中执行类似的操作,但有没有办法在package.json文件中定义一些允许的全局变量?

Lao*_*jin 285

内置environment: browser包括window:

例:

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

更多信息:http://eslint.org/docs/user-guide/configuring.html#specifying-environments

  • 以防其他人像我一样陷入困境:这应该在`.eslintrc`而不是`package.json`中 (4认同)

che*_*n99 98

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

在package.json中,这适用:

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

  • 正确的方法是使用"env":{"browser":true} (58认同)
  • 也可以像这样内联全局变量:/*global angular:true*/ (4认同)

Kir*_*eck 57

添加.eslintrc项目根目录.

{
  "globals": {
    "document": true,
    "foo": true,
    "window": true
  }
}
Run Code Online (Sandbox Code Playgroud)


Ser*_*eev 42

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

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


Car*_*lea 8

我知道他不是要内联版本。但是由于这个问题将近10万次访问,而我是来这里寻找的,因此我将其留给下一个编码员:

确保ESLint没有与该--no-inline-config标志一起运行(如果听起来不太熟悉,那么您可能会很高兴)。然后,将其写入您的代码中(为清楚起见和约定,将其写在文件顶部):

/* eslint-env browser */
Run Code Online (Sandbox Code Playgroud)

这告诉ESLint您的工作环境是浏览器,因此现在它知道浏览器中有什么,并相应地进行了调整。

有很多环境,您可以同时使用多个环境,例如,内联:

/* eslint-env browser, node */
Run Code Online (Sandbox Code Playgroud)

或在您的ESLint的配置文件中。

他们的文档

环境定义了预定义的全局变量。可用环境为:

  • browser -浏览器全局变量。
  • node -Node.js全局变量和Node.js作用域。
  • commonjs -CommonJS全局变量和CommonJS作用域(将其用于使用Browserify / WebPack的仅浏览器代码)。
  • shared-node-browser -节点和浏览器通用的全局变量。

[...]

除了环境之外,您还可以使它忽略几乎所有您想要的东西。如果它警告您有关使用的信息,console.log()但仍然需要,请内联:

/* eslint-disable no-console */
Run Code Online (Sandbox Code Playgroud)

您可以查看所有规则的列表,包括为获得最佳编码实践而推荐的规则。