Function 'calcNewValues' has too many statements (11). Maximum allowed is 10. Open
function calcNewValues(originalValues, newValues) {
- Read upRead up
- Exclude checks
title: max-statements ruletype: suggestion relatedrules: - complexity - max-depth - max-len - max-lines - max-lines-per-function - max-nested-callbacks
- max-params
The max-statements
rule allows you to specify the maximum number of statements allowed in a function.
function foo() {
var bar = 1; // one statement
var baz = 2; // two statements
var qux = 3; // three statements
}
Rule Details
This rule enforces a maximum number of statements allowed in function blocks.
Options
This rule has a number or object option:
-
"max"
(default10
) enforces a maximum number of statements allows in function blocks
Deprecated: The object property maximum
is deprecated; please use the object property max
instead.
This rule has an object option:
-
"ignoreTopLevelFunctions": true
ignores top-level functions
max
Examples of incorrect code for this rule with the default { "max": 10 }
option:
::: incorrect
/*eslint max-statements: ["error", 10]*/
/*eslint-env es6*/
function foo() {
var foo1 = 1;
var foo2 = 2;
var foo3 = 3;
var foo4 = 4;
var foo5 = 5;
var foo6 = 6;
var foo7 = 7;
var foo8 = 8;
var foo9 = 9;
var foo10 = 10;
var foo11 = 11; // Too many.
}
let foo = () => {
var foo1 = 1;
var foo2 = 2;
var foo3 = 3;
var foo4 = 4;
var foo5 = 5;
var foo6 = 6;
var foo7 = 7;
var foo8 = 8;
var foo9 = 9;
var foo10 = 10;
var foo11 = 11; // Too many.
};
:::
Examples of correct code for this rule with the default { "max": 10 }
option:
::: correct
/*eslint max-statements: ["error", 10]*/
/*eslint-env es6*/
function foo() {
var foo1 = 1;
var foo2 = 2;
var foo3 = 3;
var foo4 = 4;
var foo5 = 5;
var foo6 = 6;
var foo7 = 7;
var foo8 = 8;
var foo9 = 9;
var foo10 = 10;
return function () {
// The number of statements in the inner function does not count toward the
// statement maximum.
return 42;
};
}
let foo = () => {
var foo1 = 1;
var foo2 = 2;
var foo3 = 3;
var foo4 = 4;
var foo5 = 5;
var foo6 = 6;
var foo7 = 7;
var foo8 = 8;
var foo9 = 9;
var foo10 = 10;
return function () {
// The number of statements in the inner function does not count toward the
// statement maximum.
return 42;
};
}
:::
Note that this rule does not apply to class static blocks, and that statements in class static blocks do not count as statements in the enclosing function.
Examples of correct code for this rule with { "max": 2 }
option:
::: correct
/*eslint max-statements: ["error", 2]*/
function foo() {
let one;
let two = class {
static {
let three;
let four;
let five;
if (six) {
let seven;
let eight;
let nine;
}
}
};
}
:::
ignoreTopLevelFunctions
Examples of additional correct code for this rule with the { "max": 10 }, { "ignoreTopLevelFunctions": true }
options:
::: correct
/*eslint max-statements: ["error", 10, { "ignoreTopLevelFunctions": true }]*/
function foo() {
var foo1 = 1;
var foo2 = 2;
var foo3 = 3;
var foo4 = 4;
var foo5 = 5;
var foo6 = 6;
var foo7 = 7;
var foo8 = 8;
var foo9 = 9;
var foo10 = 10;
var foo11 = 11;
}
::: Source: http://eslint.org/docs/rules/
File has too many lines (309). Maximum allowed is 250. Open
async get(thesauriId, language, user) {
- Read upRead up
- Exclude checks
title: max-lines ruletype: suggestion relatedrules: - complexity - max-depth - max-lines-per-function - max-nested-callbacks - max-params - max-statements further_reading:
- https://web.archive.org/web/20160725154648/http://www.mind2b.com/component/content/article/24-software-module-size-and-file-size
Some people consider large files a code smell. Large files tend to do a lot of things and can make it hard following what's going. While there is not an objective maximum number of lines considered acceptable in a file, most people would agree it should not be in the thousands. Recommendations usually range from 100 to 500 lines.
Rule Details
This rule enforces a maximum number of lines per file, in order to aid in maintainability and reduce complexity.
Please note that most editors show an additional empty line at the end if the file ends with a line break. This rule does not count that extra line.
Options
This rule has a number or object option:
"max"
(default300
) enforces a maximum number of lines in a file"skipBlankLines": true
ignore lines made up purely of whitespace."skipComments": true
ignore lines containing just comments
max
Examples of incorrect code for this rule with a max value of 2
:
::: incorrect
/*eslint max-lines: ["error", 2]*/
var a,
b,
c;
:::
::: incorrect
/*eslint max-lines: ["error", 2]*/
var a,
b,c;
:::
::: incorrect
/*eslint max-lines: ["error", 2]*/
// a comment
var a,
b,c;
:::
Examples of correct code for this rule with a max value of 2
:
::: correct
/*eslint max-lines: ["error", 2]*/
var a,
b, c;
:::
::: correct
/*eslint max-lines: ["error", 2]*/
var a, b, c;
:::
::: correct
/*eslint max-lines: ["error", 2]*/
// a comment
var a, b, c;
:::
skipBlankLines
Examples of incorrect code for this rule with the { "skipBlankLines": true }
option:
::: incorrect
/*eslint max-lines: ["error", {"max": 2, "skipBlankLines": true}]*/
var a,
b,
c;
:::
Examples of correct code for this rule with the { "skipBlankLines": true }
option:
::: correct
/*eslint max-lines: ["error", {"max": 2, "skipBlankLines": true}]*/
var a,
b, c;
:::
skipComments
Examples of incorrect code for this rule with the { "skipComments": true }
option:
::: incorrect
/*eslint max-lines: ["error", {"max": 2, "skipComments": true}]*/
// a comment
var a,
b,
c;
:::
Examples of correct code for this rule with the { "skipComments": true }
option:
::: correct
/*eslint max-lines: ["error", {"max": 2, "skipComments": true}]*/
// a comment
var a,
b, c;
:::
When Not To Use It
You can turn this rule off if you are not concerned with the number of lines in your files.
Compatibility
- JSCS: maximumNumberOfLines Source: http://eslint.org/docs/rules/
Assignment to property of function parameter 'thesauri'. Open
thesauri.values = generateIds(thesauri.values);
- Read upRead up
- Exclude checks
title: no-param-reassign ruletype: suggestion furtherreading:
- https://spin.atomicobject.com/2011/04/10/javascript-don-t-reassign-your-function-arguments/
Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments
object when not in strict mode (see When Not To Use It below). Often, assignment to function parameters is unintended and indicative of a mistake or programmer error.
This rule can be also configured to fail when function parameters are modified. Side effects on parameters can cause counter-intuitive execution flow and make errors difficult to track down.
Rule Details
This rule aims to prevent unintended behavior caused by modification or reassignment of function parameters.
Examples of incorrect code for this rule:
::: incorrect
/*eslint no-param-reassign: "error"*/
function foo(bar) {
bar = 13;
}
function foo(bar) {
bar++;
}
function foo(bar) {
for (bar in baz) {}
}
function foo(bar) {
for (bar of baz) {}
}
:::
Examples of correct code for this rule:
::: correct
/*eslint no-param-reassign: "error"*/
function foo(bar) {
var baz = bar;
}
:::
Options
This rule takes one option, an object, with a boolean property "props"
, and arrays "ignorePropertyModificationsFor"
and "ignorePropertyModificationsForRegex"
. "props"
is false
by default. If "props"
is set to true
, this rule warns against the modification of parameter properties unless they're included in "ignorePropertyModificationsFor"
or "ignorePropertyModificationsForRegex"
, which is an empty array by default.
props
Examples of correct code for the default { "props": false }
option:
::: correct
/*eslint no-param-reassign: ["error", { "props": false }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of incorrect code for the { "props": true }
option:
::: incorrect
/*eslint no-param-reassign: ["error", { "props": true }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of correct code for the { "props": true }
option with "ignorePropertyModificationsFor"
set:
::: correct
/*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsFor": ["bar"] }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of correct code for the { "props": true }
option with "ignorePropertyModificationsForRegex"
set:
::: correct
/*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsForRegex": ["^bar"] }]*/
function foo(barVar) {
barVar.prop = "value";
}
function foo(barrito) {
delete barrito.aaa;
}
function foo(bar_) {
bar_.aaa++;
}
function foo(barBaz) {
for (barBaz.aaa in baz) {}
}
function foo(barBaz) {
for (barBaz.aaa of baz) {}
}
:::
When Not To Use It
If you want to allow assignment to function parameters, then you can safely disable this rule.
Strict mode code doesn't sync indices of the arguments object with each parameter binding. Therefore, this rule is not necessary to protect against arguments object mutation in ESM modules or other strict mode functions. Source: http://eslint.org/docs/rules/
Assignment to property of function parameter 'thesauri'. Open
thesauri.values = thesauri.values.map(value => {
- Read upRead up
- Exclude checks
title: no-param-reassign ruletype: suggestion furtherreading:
- https://spin.atomicobject.com/2011/04/10/javascript-don-t-reassign-your-function-arguments/
Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments
object when not in strict mode (see When Not To Use It below). Often, assignment to function parameters is unintended and indicative of a mistake or programmer error.
This rule can be also configured to fail when function parameters are modified. Side effects on parameters can cause counter-intuitive execution flow and make errors difficult to track down.
Rule Details
This rule aims to prevent unintended behavior caused by modification or reassignment of function parameters.
Examples of incorrect code for this rule:
::: incorrect
/*eslint no-param-reassign: "error"*/
function foo(bar) {
bar = 13;
}
function foo(bar) {
bar++;
}
function foo(bar) {
for (bar in baz) {}
}
function foo(bar) {
for (bar of baz) {}
}
:::
Examples of correct code for this rule:
::: correct
/*eslint no-param-reassign: "error"*/
function foo(bar) {
var baz = bar;
}
:::
Options
This rule takes one option, an object, with a boolean property "props"
, and arrays "ignorePropertyModificationsFor"
and "ignorePropertyModificationsForRegex"
. "props"
is false
by default. If "props"
is set to true
, this rule warns against the modification of parameter properties unless they're included in "ignorePropertyModificationsFor"
or "ignorePropertyModificationsForRegex"
, which is an empty array by default.
props
Examples of correct code for the default { "props": false }
option:
::: correct
/*eslint no-param-reassign: ["error", { "props": false }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of incorrect code for the { "props": true }
option:
::: incorrect
/*eslint no-param-reassign: ["error", { "props": true }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of correct code for the { "props": true }
option with "ignorePropertyModificationsFor"
set:
::: correct
/*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsFor": ["bar"] }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of correct code for the { "props": true }
option with "ignorePropertyModificationsForRegex"
set:
::: correct
/*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsForRegex": ["^bar"] }]*/
function foo(barVar) {
barVar.prop = "value";
}
function foo(barrito) {
delete barrito.aaa;
}
function foo(bar_) {
bar_.aaa++;
}
function foo(barBaz) {
for (barBaz.aaa in baz) {}
}
function foo(barBaz) {
for (barBaz.aaa of baz) {}
}
:::
When Not To Use It
If you want to allow assignment to function parameters, then you can safely disable this rule.
Strict mode code doesn't sync indices of the arguments object with each parameter binding. Therefore, this rule is not necessary to protect against arguments object mutation in ESM modules or other strict mode functions. Source: http://eslint.org/docs/rules/
Assignment to property of function parameter 'value'. Open
value.values = generateIds(value.values);
- Read upRead up
- Exclude checks
title: no-param-reassign ruletype: suggestion furtherreading:
- https://spin.atomicobject.com/2011/04/10/javascript-don-t-reassign-your-function-arguments/
Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments
object when not in strict mode (see When Not To Use It below). Often, assignment to function parameters is unintended and indicative of a mistake or programmer error.
This rule can be also configured to fail when function parameters are modified. Side effects on parameters can cause counter-intuitive execution flow and make errors difficult to track down.
Rule Details
This rule aims to prevent unintended behavior caused by modification or reassignment of function parameters.
Examples of incorrect code for this rule:
::: incorrect
/*eslint no-param-reassign: "error"*/
function foo(bar) {
bar = 13;
}
function foo(bar) {
bar++;
}
function foo(bar) {
for (bar in baz) {}
}
function foo(bar) {
for (bar of baz) {}
}
:::
Examples of correct code for this rule:
::: correct
/*eslint no-param-reassign: "error"*/
function foo(bar) {
var baz = bar;
}
:::
Options
This rule takes one option, an object, with a boolean property "props"
, and arrays "ignorePropertyModificationsFor"
and "ignorePropertyModificationsForRegex"
. "props"
is false
by default. If "props"
is set to true
, this rule warns against the modification of parameter properties unless they're included in "ignorePropertyModificationsFor"
or "ignorePropertyModificationsForRegex"
, which is an empty array by default.
props
Examples of correct code for the default { "props": false }
option:
::: correct
/*eslint no-param-reassign: ["error", { "props": false }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of incorrect code for the { "props": true }
option:
::: incorrect
/*eslint no-param-reassign: ["error", { "props": true }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of correct code for the { "props": true }
option with "ignorePropertyModificationsFor"
set:
::: correct
/*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsFor": ["bar"] }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of correct code for the { "props": true }
option with "ignorePropertyModificationsForRegex"
set:
::: correct
/*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsForRegex": ["^bar"] }]*/
function foo(barVar) {
barVar.prop = "value";
}
function foo(barrito) {
delete barrito.aaa;
}
function foo(bar_) {
bar_.aaa++;
}
function foo(barBaz) {
for (barBaz.aaa in baz) {}
}
function foo(barBaz) {
for (barBaz.aaa of baz) {}
}
:::
When Not To Use It
If you want to allow assignment to function parameters, then you can safely disable this rule.
Strict mode code doesn't sync indices of the arguments object with each parameter binding. Therefore, this rule is not necessary to protect against arguments object mutation in ESM modules or other strict mode functions. Source: http://eslint.org/docs/rules/
Assignment to function parameter 'ctx'. Open
ctx = Object.assign(ctx, propctx);
- Read upRead up
- Exclude checks
title: no-param-reassign ruletype: suggestion furtherreading:
- https://spin.atomicobject.com/2011/04/10/javascript-don-t-reassign-your-function-arguments/
Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments
object when not in strict mode (see When Not To Use It below). Often, assignment to function parameters is unintended and indicative of a mistake or programmer error.
This rule can be also configured to fail when function parameters are modified. Side effects on parameters can cause counter-intuitive execution flow and make errors difficult to track down.
Rule Details
This rule aims to prevent unintended behavior caused by modification or reassignment of function parameters.
Examples of incorrect code for this rule:
::: incorrect
/*eslint no-param-reassign: "error"*/
function foo(bar) {
bar = 13;
}
function foo(bar) {
bar++;
}
function foo(bar) {
for (bar in baz) {}
}
function foo(bar) {
for (bar of baz) {}
}
:::
Examples of correct code for this rule:
::: correct
/*eslint no-param-reassign: "error"*/
function foo(bar) {
var baz = bar;
}
:::
Options
This rule takes one option, an object, with a boolean property "props"
, and arrays "ignorePropertyModificationsFor"
and "ignorePropertyModificationsForRegex"
. "props"
is false
by default. If "props"
is set to true
, this rule warns against the modification of parameter properties unless they're included in "ignorePropertyModificationsFor"
or "ignorePropertyModificationsForRegex"
, which is an empty array by default.
props
Examples of correct code for the default { "props": false }
option:
::: correct
/*eslint no-param-reassign: ["error", { "props": false }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of incorrect code for the { "props": true }
option:
::: incorrect
/*eslint no-param-reassign: ["error", { "props": true }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of correct code for the { "props": true }
option with "ignorePropertyModificationsFor"
set:
::: correct
/*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsFor": ["bar"] }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of correct code for the { "props": true }
option with "ignorePropertyModificationsForRegex"
set:
::: correct
/*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsForRegex": ["^bar"] }]*/
function foo(barVar) {
barVar.prop = "value";
}
function foo(barrito) {
delete barrito.aaa;
}
function foo(bar_) {
bar_.aaa++;
}
function foo(barBaz) {
for (barBaz.aaa in baz) {}
}
function foo(barBaz) {
for (barBaz.aaa of baz) {}
}
:::
When Not To Use It
If you want to allow assignment to function parameters, then you can safely disable this rule.
Strict mode code doesn't sync indices of the arguments object with each parameter binding. Therefore, this rule is not necessary to protect against arguments object mutation in ESM modules or other strict mode functions. Source: http://eslint.org/docs/rules/
Assignment to property of function parameter '_ctx'. Open
_ctx[val.label] = val.label;
- Read upRead up
- Exclude checks
title: no-param-reassign ruletype: suggestion furtherreading:
- https://spin.atomicobject.com/2011/04/10/javascript-don-t-reassign-your-function-arguments/
Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments
object when not in strict mode (see When Not To Use It below). Often, assignment to function parameters is unintended and indicative of a mistake or programmer error.
This rule can be also configured to fail when function parameters are modified. Side effects on parameters can cause counter-intuitive execution flow and make errors difficult to track down.
Rule Details
This rule aims to prevent unintended behavior caused by modification or reassignment of function parameters.
Examples of incorrect code for this rule:
::: incorrect
/*eslint no-param-reassign: "error"*/
function foo(bar) {
bar = 13;
}
function foo(bar) {
bar++;
}
function foo(bar) {
for (bar in baz) {}
}
function foo(bar) {
for (bar of baz) {}
}
:::
Examples of correct code for this rule:
::: correct
/*eslint no-param-reassign: "error"*/
function foo(bar) {
var baz = bar;
}
:::
Options
This rule takes one option, an object, with a boolean property "props"
, and arrays "ignorePropertyModificationsFor"
and "ignorePropertyModificationsForRegex"
. "props"
is false
by default. If "props"
is set to true
, this rule warns against the modification of parameter properties unless they're included in "ignorePropertyModificationsFor"
or "ignorePropertyModificationsForRegex"
, which is an empty array by default.
props
Examples of correct code for the default { "props": false }
option:
::: correct
/*eslint no-param-reassign: ["error", { "props": false }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of incorrect code for the { "props": true }
option:
::: incorrect
/*eslint no-param-reassign: ["error", { "props": true }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of correct code for the { "props": true }
option with "ignorePropertyModificationsFor"
set:
::: correct
/*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsFor": ["bar"] }]*/
function foo(bar) {
bar.prop = "value";
}
function foo(bar) {
delete bar.aaa;
}
function foo(bar) {
bar.aaa++;
}
function foo(bar) {
for (bar.aaa in baz) {}
}
function foo(bar) {
for (bar.aaa of baz) {}
}
:::
Examples of correct code for the { "props": true }
option with "ignorePropertyModificationsForRegex"
set:
::: correct
/*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsForRegex": ["^bar"] }]*/
function foo(barVar) {
barVar.prop = "value";
}
function foo(barrito) {
delete barrito.aaa;
}
function foo(bar_) {
bar_.aaa++;
}
function foo(barBaz) {
for (barBaz.aaa in baz) {}
}
function foo(barBaz) {
for (barBaz.aaa of baz) {}
}
:::
When Not To Use It
If you want to allow assignment to function parameters, then you can safely disable this rule.
Strict mode code doesn't sync indices of the arguments object with each parameter binding. Therefore, this rule is not necessary to protect against arguments object mutation in ESM modules or other strict mode functions. Source: http://eslint.org/docs/rules/
Expected the Promise rejection reason to be an Error. Open
return Promise.reject({ key: 'templates_using_dictionary', value: count });
- Read upRead up
- Exclude checks
title: prefer-promise-reject-errors ruletype: suggestion relatedrules: - no-throw-literal further_reading:
- http://bluebirdjs.com/docs/warning-explanations.html#warning-a-promise-was-rejected-with-a-non-error
It is considered good practice to only pass instances of the built-in Error
object to the reject()
function for user-defined errors in Promises. Error
objects automatically store a stack trace, which can be used to debug an error by determining where it came from. If a Promise is rejected with a non-Error
value, it can be difficult to determine where the rejection occurred.
Rule Details
This rule aims to ensure that Promises are only rejected with Error
objects.
Options
This rule takes one optional object argument:
-
allowEmptyReject: true
(false
by default) allows calls toPromise.reject()
with no arguments.
Examples of incorrect code for this rule:
::: incorrect
/*eslint prefer-promise-reject-errors: "error"*/
Promise.reject("something bad happened");
Promise.reject(5);
Promise.reject();
new Promise(function(resolve, reject) {
reject("something bad happened");
});
new Promise(function(resolve, reject) {
reject();
});
:::
Examples of correct code for this rule:
::: correct
/*eslint prefer-promise-reject-errors: "error"*/
Promise.reject(new Error("something bad happened"));
Promise.reject(new TypeError("something bad happened"));
new Promise(function(resolve, reject) {
reject(new Error("something bad happened"));
});
var foo = getUnknownValue();
Promise.reject(foo);
:::
Examples of correct code for this rule with the allowEmptyReject: true
option:
::: correct
/*eslint prefer-promise-reject-errors: ["error", {"allowEmptyReject": true}]*/
Promise.reject();
new Promise(function(resolve, reject) {
reject();
});
:::
Known Limitations
Due to the limits of static analysis, this rule cannot guarantee that you will only reject Promises with Error
objects. While the rule will report cases where it can guarantee that the rejection reason is clearly not an Error
, it will not report cases where there is uncertainty about whether a given reason is an Error
. For more information on this caveat, see the [similar limitations](no-throw-literal#known-limitations) in the no-throw-literal
rule.
To avoid conflicts between rules, this rule does not report non-error values used in throw
statements in async functions, even though these lead to Promise rejections. To lint for these cases, use the [no-throw-literal
](no-throw-literal) rule.
When Not To Use It
If you're using custom non-error values as Promise rejection reasons, you can turn off this rule. Source: http://eslint.org/docs/rules/
shared/data_utils/objectIndex
import should occur before import of ./dictionariesModel
Open
import { objectIndex } from 'shared/data_utils/objectIndex';
- Read upRead up
- Exclude checks
For more information visit Source: http://eslint.org/docs/rules/
Definition for rule 'node/no-restricted-import' was not found. Open
import _ from 'lodash';
- Read upRead up
- Exclude checks
For more information visit Source: http://eslint.org/docs/rules/
Prefer named exports. Open
export default thesauri;
- Read upRead up
- Exclude checks
For more information visit Source: http://eslint.org/docs/rules/