ESLint - "window" 未定义。如何在 package.json 中允许全局变量
ESLint - "window" is not defined. How to allow global variables in package.json
我正在为全局 window 对象分配一个 属性,但是当我 运行 eslint 时,我得到这个:
"window" is not defined
我看到这个here in the eslint docs:
the following defines window as a global variable for code that should not trigger the rule being tested:
valid: [
{
code: "window.alert()",
globals: [ "window" ]
}
]
我试过将类似这样的内容添加到 package.json 文件中以使 eslint 允许 "window" 作为全局变量,但我一定是做错了什么。从文档看来我可能需要在一个单独的文件中做这样的事情,但是有没有办法在 package.json 文件中定义一些允许的全局变量?
我在这个页面上找到它:http://eslint.org/docs/user-guide/configuring
在 package.json 中有效:
"eslintConfig": {
"globals": {
"window": true
}
}
有一个内置 environment: browser
,其中包括 window
。
示例.eslintrc.json
:
"env": {
"browser": true,
"node": true,
"jasmine": true
},
更多信息:https://eslint.org/docs/user-guide/configuring/language-options#specifying-environments
另见下文 。
在项目根目录添加.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
}
}
我知道他没有要求 inline 版本。但是由于这个问题有将近 10 万次访问,而我在这里寻找它,我将把它留给下一个编码员:
确保 ESLint 不是 运行 带有 --no-inline-config
标志(如果这听起来不熟悉,你可能会很高兴去)。然后,将其写入您的代码文件(为了清晰和约定,它写在文件的顶部,但它可以在任何地方工作):
/* eslint-env browser */
这会告诉 ESLint 您的工作环境是浏览器,因此现在它知道浏览器中可用的内容并相应地进行调整。
有很多environments,可以同时声明多个,比如内联:
/* eslint-env browser, node */
如果您几乎总是使用特定的环境,最好在您的 ESLint's config file 中设置它并忘记它。
来自 their docs:
An environment defines global variables that are predefined. The
available environments are:
browser
- browser global variables.
node
- Node.js global variables and Node.js scoping.
commonjs
- CommonJS global variables and CommonJS scoping (use this for browser-only code that uses Browserify/WebPack).
shared-node-browser
- Globals common to both Node and Browser.
[...]
除了环境,您还可以让它忽略任何您想要的东西。如果它警告您使用 console.log()
但您不想收到警告,只需内联:
/* eslint-disable no-console */
您可以查看 the list of all rules,包括 最佳编码实践。
的推荐规则
我正在为全局 window 对象分配一个 属性,但是当我 运行 eslint 时,我得到这个:
"window" is not defined
我看到这个here in the eslint docs:
the following defines window as a global variable for code that should not trigger the rule being tested:
valid: [
{
code: "window.alert()",
globals: [ "window" ]
}
]
我试过将类似这样的内容添加到 package.json 文件中以使 eslint 允许 "window" 作为全局变量,但我一定是做错了什么。从文档看来我可能需要在一个单独的文件中做这样的事情,但是有没有办法在 package.json 文件中定义一些允许的全局变量?
我在这个页面上找到它:http://eslint.org/docs/user-guide/configuring
在 package.json 中有效:
"eslintConfig": {
"globals": {
"window": true
}
}
有一个内置 environment: browser
,其中包括 window
。
示例.eslintrc.json
:
"env": {
"browser": true,
"node": true,
"jasmine": true
},
更多信息:https://eslint.org/docs/user-guide/configuring/language-options#specifying-environments
另见下文
在项目根目录添加.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
}
}
我知道他没有要求 inline 版本。但是由于这个问题有将近 10 万次访问,而我在这里寻找它,我将把它留给下一个编码员:
确保 ESLint 不是 运行 带有 --no-inline-config
标志(如果这听起来不熟悉,你可能会很高兴去)。然后,将其写入您的代码文件(为了清晰和约定,它写在文件的顶部,但它可以在任何地方工作):
/* eslint-env browser */
这会告诉 ESLint 您的工作环境是浏览器,因此现在它知道浏览器中可用的内容并相应地进行调整。
有很多environments,可以同时声明多个,比如内联:
/* eslint-env browser, node */
如果您几乎总是使用特定的环境,最好在您的 ESLint's config file 中设置它并忘记它。
来自 their docs:
An environment defines global variables that are predefined. The available environments are:
browser
- browser global variables.node
- Node.js global variables and Node.js scoping.commonjs
- CommonJS global variables and CommonJS scoping (use this for browser-only code that uses Browserify/WebPack).shared-node-browser
- Globals common to both Node and Browser.[...]
除了环境,您还可以让它忽略任何您想要的东西。如果它警告您使用 console.log()
但您不想收到警告,只需内联:
/* eslint-disable no-console */
您可以查看 the list of all rules,包括 最佳编码实践。
的推荐规则