ESLint:'chrome'未定义(no-undef)

时间:2018-02-02 14:15:17

标签: javascript browser google-chrome-extension eslint

我将ESLint添加到我的chrome扩展项目中。我使用的是以chrome.开头的chrome API,但显然eslint指向它是错误。

我想它应该是这样的:

"env": {
  "browser": true,
  "chrome": true,
  "es6": true
},

但显然不是。

UPD:我认为最好的答案是添加webextensions: true - 正如wOxxOm建议的那样。因为它是Chrome扩展程序 - chrome. API在这里被大量使用。

否则,如其他建议添加/* global chrome */会更好。

感谢您的回答。

4 个答案:

答案 0 :(得分:9)

您需要添加:

"env": {
    // ...
    "webextensions": true
}

到您的.eslintrc.json文件或一般的eslint配置。

答案 1 :(得分:3)

您可以在eslint配置文件中添加此项以添加全局变量

"globals": {
    "chrome": true
}

答案 2 :(得分:2)

编辑:在create-react-app v4.0.0中,不再需要使用EXTEND_ESLINT标志来自定义ESLint配置,因此在4.0.0版本以后,以下答案将是不必要的。

我们还将eslint-plugin-hooks升级到了4.0.0版本,并删除了EXTEND_ESLINT标志,因为不再需要自定义ESLint配置。


我正在使用create-react-app,发现除了定义:

# This is YAML btw
env:
  # ...
  webextensions: true

在我的eslint配置中(将chrome作为全局变量添加),我还必须将EXTEND_ESLINT的{​​{1}}环境变量设置为create-react-appDocs here

设置环境变量有几种不同的方法。例如,您可以在项目文件夹的根目录中创建一个true文件,内容如下:

.env

从文档中,我相信这是一个实验性功能,但它为EXTEND_ESLINT=true 提供了eslint的配置。在设置启用此功能之前,我必须手动注释

eslint-loader

在每个文件中,由于构建过程未使用我的/* global chrome */ 配置,因此无法识别我将eslint设置为全局变量。

尽管这个问题没有提及chrome,但我敢肯定,很多人会以与我本人相同的情况来问这个问题。

答案 3 :(得分:0)

如评论中所述,没有chrome环境,您可以在eslint docs中找到有关可配置环境的更多信息。

您可以将每个文件的全局变量指定为顶行注释,或者在配置文件中,请参阅specifying global。您还可以编写自定义Eslint Chrome插件,设置全局和解析器选项(这是环境为您做的)并将其导入配置文件。