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

“window”没有定义

我在eslint文档中看到了这个:

下面将window定义为一个全局变量,用于不触发正在测试的规则的代码:

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

我试过在包中添加这样的东西。json文件有eslint允许“窗口”作为一个全局变量,但我一定是做错了什么。从文档中,似乎我可能需要在一个单独的文件中做这样的事情,但是有一种方法可以在包中定义一些允许的全局变量。json文件吗?


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

在包中。Json,这工作:

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

有一个内置的环境:浏览器,包括窗口。

示例.eslintrc.json:

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

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

也可以看看包装。下面是chevin99的Json答案。


在项目根目录中添加.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
  }                                                                      
}

我知道他要求的不是内联版本。但由于这个问题有近10万次访问,我在这里寻找它,我将把它留给下一个程序员同事:

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

/* eslint-env browser */

这告诉ESLint你的工作环境是一个浏览器,所以现在它知道浏览器中有什么可用的东西,并相应地进行调整。

有很多环境,你可以同时声明多个,例如,in-line:

/* eslint-env browser, node */

如果你总是使用特定的环境,最好在ESLint的配置文件中设置它,然后忘记它。

医生说:

环境定义了预定义的全局变量。的 可用的环境包括: 浏览器-浏览器全局变量。 node - node .js全局变量和node .js作用域。 commonjs - commonjs全局变量和commonjs作用域(使用Browserify/WebPack的纯浏览器代码使用这个)。 shared-node-browser -节点和浏览器共用的全局变量。 […]

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

/* eslint-disable no-console */

您可以看到所有规则的列表,包括最佳编码实践的推荐规则。