I am trying to lint my angular code using angular, eslint:recommended and the jasmine plugin recommended settings. However I get is not defined errors on the jasmine stuff. My eslint file looks like this:
{
"plugins": ["jasmine"],
"extends": ["angular", "eslint:recommended",
"plugin:jasmine/recommended"],
"rules": {
"quotes": [ 2, "single"],
"strict": [2, "global"],
"semi": ["error", "always"],
"angular/on-watch": "warn"
}
}
I get the following errors:
3:1 error 'describe' is not defined no-undef
4:5 error 'it' is not defined no-undef
5:9 error 'expect' is not defined no-undef
7:5 error 'it' is not defined no-undef
8:9 error 'expect' is not defined no-undef
And in my package.json
I have version 2.3.0
for eslint
and 1.8.1
for eslint-plugin-jasmine
. I also have version 0.5.0
for eslint-config-angular
and 1.0.0
for eslint-plugin-angular
.
I have also tried without specifying the "plugins": ["jasmine"]
in my eslint
file but then I get an error telling me the jasmine rules are not defined (eg Definition for rule 'jasmine/no-focused-tests' was not found
).
Adding
"env": {
"jasmine": true
}
solved the problem. This was the suggestion that i got through the github page of the eslint jasmine plugin.
With this rule set, any variable non explicitly declared causes a warning. You can set at the top of your spec file:
/* global describe it expect */
The way I found to configure the validations for all Jasmine functions and do it in a single place, but still flag them when they are used in a "non-spec" file is as follows.
Have the common configuration defined at config level. Then, for those specific configurations (such as Typescript or Jasmin) do an override. That way, the "global configuration" is applied only to specific files.
{
"env": {
"jasmine": true
},
"files": ["**/*.spec.js"]
}
Fragment of .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": {...}
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With