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

Yur*_*hko 19 javascript browser google-chrome-extension eslint

我将ESLint添加到我的chrome扩展项目中.我正在使用从一开始就使用的chrome API chrome.,但显然它是错误的.

我想应该是这样的:

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

但显然不是.

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

否则添加/* global chrome */其他建议会更好.

谢谢你的回答.

Dan*_*mak 18

你需要添加:

"env": {
    // ...
    "webextensions": true
}
Run Code Online (Sandbox Code Playgroud)

.eslintrc.json一般来说,你的文件或eslint配置.

  • eslintConfig 中的“webextensions”键对我不起作用。这是我的 package.json 中的 eslintConfig: `"eslintConfig": { "extends": "react-app", "env": {"webextensions": true} },`知道为什么吗? (2认同)
  • 仍然没有运气...... `"eslintConfig": { "extends": "react-app", "env": { "webextensions": true, "browser": true } },` 迄今为止唯一适用的解决方案我正在使用“chrome”的 js 文件顶部添加 `/* global chrome */`。 (2认同)

小智 6

您可以将其添加到eslint配置文件中以添加全局变量

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


hol*_*erd 0

正如评论中提到的,没有环境,您可以在 eslint文档chrome中找到有关可配置环境的更多信息。

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