Eslint Angular 和 jasmine:未定义 no-undef

问题描述 投票:0回答:5

我正在尝试使用 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 错误“描述”未定义 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
。我还有
0.5.0 
的版本
eslint-config-angular
1.0.0
eslint-plugin-angular

我也尝试过在我的

"plugins": ["jasmine"]
文件中不指定
eslint
,但随后我收到一条错误消息,告诉我茉莉花规则未定义(例如
Definition for rule 'jasmine/no-focused-tests' was not found
)。

angularjs jasmine eslint
5个回答
46
投票

添加

"env": {
 "jasmine": true
}

解决了问题。这是我通过 eslint jasmine 插件的 github 页面得到的建议。


7
投票

我发现为所有 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": {...}
};

3
投票

设置此规则后,任何未显式声明的变量都会引发警告。 您可以在 spec 文件顶部设置: /* global describe it expect */



2
投票
/* eslint-env jasmine */

添加到

.spec.ts
文件的顶部。这与 Geert 提出的解决方案基本相同,但采用的是每个文件的解决方案。细微的区别在于,在非测试文件中使用一些全局定义的测试方法(例如
describe()
it()
)仍然会出错。
(可能有一种巧妙的方法来设置 ESLint,这样您就不必将此行添加到所有 

.spec.ts

文件中。)

    


0
投票
env

不再有效。 您必须在语言选项的

...globals.jasmine
对象中添加
globals
(在您的
eslint.config.mjs
配置文件中)。
languageOptions: {
//...
  globals: {
  //...
  ...globals.jasmine
  }
},

	
© www.soinside.com 2019 - 2024. All rights reserved.