[英]ESLint's "no-undef" rule is calling my use of Underscore an undefined variable
[英]Eslint angular and jasmine: is not defined no-undef
我正在尝试使用 angular、eslint:recommended 和 jasmine 插件推荐的设置来整理我的 angular 代码。 但是我得到的不是关于茉莉花的定义错误。 我的 eslint 文件如下所示:
{
"plugins": ["jasmine"],
"extends": ["angular", "eslint:recommended",
"plugin:jasmine/recommended"],
"rules": {
"quotes": [ 2, "single"],
"strict": [2, "global"],
"semi": ["error", "always"],
"angular/on-watch": "warn"
}
}
我收到以下错误:
3:1 错误 'describe' 未定义 no-undef
4:5 错误 'it' 未定义 no-undef
5:9 错误 'expect' 未定义 no-undef
7:5 错误 'it' 未定义 no-undef
8:9 错误 'expect' 未定义 no-undef
在我的package.json
我有2.3.0
版的eslint
和1.8.1
的eslint-plugin-jasmine
。 我还有eslint-config-angular
0.5.0
版本和eslint-plugin-angular
1.0.0
版本。
我也试过在我的eslint
文件中不指定"plugins": ["jasmine"]
但后来我收到一个错误,告诉我没有定义 jasmine 规则(例如Definition for rule 'jasmine/no-focused-tests' was not found
)。
添加
"env": {
"jasmine": true
}
解决了这个问题。 这是我通过 eslint jasmine 插件的 github 页面获得的建议。
使用此规则集,任何未明确声明的变量都会导致警告。 您可以在规范文件的顶部设置:
/* global describe it expect */
您可以将/* eslint-env jasmine */
到.spec.ts
文件的顶部。 这与 Geert 提出的解决方案基本相同,但采用每个文件的解决方案。 细微的区别在于,在非测试文件中使用某些全局定义的测试方法(如describe()
和it()
仍然会出错。
(可能有一种聪明的方法来设置 ESLint,这样您就不必将此行添加到所有.spec.ts
文件中。)
我发现为所有 Jasmine 函数配置验证并在一个地方进行验证,但在“非规范”文件中使用它们时仍然标记它们的方法如下。
在配置级别定义通用配置。 然后,对于那些特定的配置(例如 Typescript 或 Jasmin)进行覆盖。 这样,“全局配置”仅适用于特定文件。
{
"env": {
"jasmine": true
},
"files": ["**/*.spec.js"]
}
.eslintrc.js
片段:
/**
* @type {import("eslint").Linter.Config}
*/
module.exports = {
"env": {...},
"extends": [
"eslint:recommended"
],
"overrides": [
{
"extends": [
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended"
],
"files": ["**/*.ts"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "tsconfig.json",
"tsconfigRootDir": __dirname
},
"plugins": [
"@typescript-eslint"
]
},
// This is the important part
{
"env": {
"jasmine": true
},
"files": ["**/*.spec.js"]
}
],
"root": true,
"rules": {...}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.