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

问题描述 投票:160回答:6

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

“窗口”未定义

我看到这个here in the eslint docs

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

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

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

eslint
6个回答
268
投票

有一个内置的qazxsw poi,包括qazxsw poi:

例:

environment: browser

更多信息:window


93
投票

我在这个页面上找到了它:"env": { "browser": true, "node": true, "jasmine": true },

在package.json中,这适用:

http://eslint.org/docs/user-guide/configuring.html#specifying-environments

56
投票

在项目根目录中添加http://eslint.org/docs/user-guide/configuring

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

41
投票

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

.eslintrc

4
投票

我知道他不是要求内联版本,但是由于这个问题几乎有10万次访问而且我在这里寻找它,我会留在这里为下一个:

确保ESLint不使用{ "globals": { "document": true, "foo": true, "window": true } } 标志运行,并在代码中的任何位置写入(仅为了清楚起见,将其写在文件顶部):

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

这告诉ESLint您的工作环境是一个浏览器,所以现在它知道浏览器中的内容并相应地进行调整。

有很多--no-inline-config,你可以同时使用多个(内联,如/* eslint-env browser */ 或ESLint的配置文件):

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

  • environments - 浏览器全局变量。
  • /* eslint-env browser, node */ - Node.js全局变量和Node.js范围。
  • browser - CommonJS全局变量和CommonJS范围(将此用于使用Browserify / WebPack的仅浏览器代码)。
  • node - Node和Browser共有的Globals。

[...]


2
投票

如果您使用的是Angular,可以通过以下方式获取:

commonjs
© www.soinside.com 2019 - 2024. All rights reserved.