ESLint - 未定义“窗口”。如何在package.json

时间:2015-05-22 14:03:59

标签: eslint

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

  

“窗口”未定义

我看到了here in the eslint docs

  

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

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

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

6 个答案:

答案 0 :(得分:260)

内置environment: browser包含window

示例:

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

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

答案 1 :(得分:91)

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

在package.json中,这有效:

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

答案 2 :(得分:53)

在项目根目录中添加.eslintrc

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

答案 3 :(得分:39)

您的 .eslintrc.json 应包含以下文字 通过这种方式,ESLint了解您的全局变量。

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

答案 4 :(得分:4)

我知道他并没有要求使用 inline 版本,但是由于该问题的访问量接近10万,而我却在这里寻找它,因此我将其留给下一个版本:

确保ESLint不与--no-inline-config标志一起运行,并将其写入代码中的任意位置(为清楚起见,将其写在文件顶部):

/* eslint-env browser */

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

environments有很多,您可以同时使用多个(内联,例如/* eslint-env browser, node */或来自ESLint的配置文件):

  

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

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

[...]

答案 5 :(得分:2)

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

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