Turning off eslint rule for a specific line

Asked 2023-09-21 08:08:32 View 448,845

In order to turn off linting rule for a particular line in JSHint we use the following rule:

/* jshint ignore:start*/
$scope.someVar = ConstructorFunction();
/* jshint ignore:end */

I have been trying to locate the equivalent of the above for eslint.

  • Use eslint-disable-next-line: - anyone
  • Starting with ESLint v7, you can specify the reason for disabling a given rule in the same comment. - anyone
  • To disable multiple specific rules: // eslint-disable-line no-console, max-len - anyone

Answers

To disable next line:

// eslint-disable-next-line no-use-before-define
var thing = new Thing();

Or use the single line syntax:

var thing = new Thing(); // eslint-disable-line no-use-before-define

See the eslint docs


Thanks to KhalilRavanna comment

if you don't care about specificity you can just do //eslint-disable-line and it appears to disable all rules for the given line

var thing = new Thing() // eslint-disable-line

Answered   2023-09-21 08:08:32

  • Now I get another eslint problem: warning Unexpected comment inline with code no-inline-comments :( - anyone
  • Works great for me. Also if you don't care about specificity you can just do //eslint-disable-line and it appears to disable all rules for the given line. - anyone
  • For some reason this doesn't work for me; I'm running eslint 3.8.0. I have to use /*eslint-disable */ and /*eslint-enable */. Any idea why this might be? I like the single line approach - anyone
  • @SomethingOn had the same problem, turned out I had --no-inline-config turned on, which Prevent comments from changing config or rules - anyone
  • Not working with "gulp-eslint": "^3.0.1". I have to use /*eslint-disable */ - anyone

Update

ESlint has now been updated with a better way disable a single line

// eslint-disable-next-line $rulename

see @goofballLogic's excellent answer.

NOTE Though, the above not working for jsx eg React webapp


Old answer

You can use the following pair of disable/ enable comments - please note only /*eslint ... */ syntax working, //eslint ... NOT working

/* eslint-disable */
alert('suppress all warnings between comments')
/* eslint-enable */

/* eslint-disable eqeqeq */
alert('suppress specific warning eg eqeqeq between comments')
/* eslint-enable eqeqeq */

To disable a specific warning e.g. eqeqeq for an entire file, you can include a comment at the top of the file:

/* eslint eqeqeq:0 */

And when multi-rule to ignore, list them ON 1 LINE separated with a space

/* eslint jsx-a11y/alt-text:0 react/jsx-no-duplicate-props:0 */

Answered   2023-09-21 08:08:32

  • BTW, it seems that the // comment syntax does not work… - anyone
  • Also a side note, i was looking for disabling eslint for one line in html. this works :thumbsup: - anyone
  • This is best answer to me - anyone
  • In typescript, if setting the name of the rule, I have to add @typescript-eslint/ before the rule name: // eslint-disable-line @typescript-eslint/no-unused-vars - anyone

You can also disable a specific rule/rules (rather than all) by specifying them in the enable (open) and disable (close) blocks:

/* eslint-disable no-alert, no-console */

alert('foo');
console.log('bar');

/* eslint-enable no-alert */

via @goofballMagic's link above: http://eslint.org/docs/user-guide/configuring.html#configuring-rules

Answered   2023-09-21 08:08:32

  • Be sure your eslint comments pass eslint! -> Expected exception block, space or tab after '/*' in comment. :) - anyone
  • I use a combination of prettier and eslint to format my code. This does not allow for inline comments. Many /* eslint-disable-next-line ... */ statements are hard to read and to spot in the code. - anyone

From Configuring ESLint - Disabling Rules with Inline Comments:

/* eslint-disable no-alert, no-console */


/* eslint-disable */

alert('foo');

/* eslint-enable */


/* eslint-disable no-alert, no-console */

alert('foo');
console.log('bar');

/* eslint-enable no-alert, no-console */


/* eslint-disable */

alert('foo');


/* eslint-disable no-alert */

alert('foo');


alert('foo'); // eslint-disable-line

// eslint-disable-next-line
alert('foo');


alert('foo'); // eslint-disable-line no-alert

// eslint-disable-next-line no-alert
alert('foo');


alert('foo'); // eslint-disable-line no-alert, quotes, semi

// eslint-disable-next-line no-alert, quotes, semi
alert('foo');


foo(); // eslint-disable-line example/rule-name

Answered   2023-09-21 08:08:32

Answer

You can use an inline comment: // eslint-disable-next-line rule-name.

Example

// eslint-disable-next-line no-console
console.log('eslint will ignore the no-console on this line of code');

Reference

ESLint - Disabling Rules with Inline Comments

Answered   2023-09-21 08:08:32

The general end of line comment, // eslint-disable-line, does not need anything after it: no need to look up a code to specify what you wish ES Lint to ignore.

If you need to have any syntax ignored for any reason other than a quick debugging, you have problems: why not update your delint config?

I enjoy // eslint-disable-line to allow me to insert console for a quick inspection of a service, without my development environment holding me back because of the breach of protocol. (I generally ban console, and use a logging class - which sometimes builds upon console.)

Answered   2023-09-21 08:08:32

  • No offence, but this is the same solution as the accepted answer, so not sure how this helps? - anyone
  • Do NOT do this. If you have 5 errors on the line, they will all be ignored. Always explicitly set the rule which is to be ignored or the kids will make a mess. - anyone
  • @FilipDupanović If your programmers can make a mess within a single line of code, just because eslint is not looking over their shoulders for a single line. There is really something else going wrong at your company... That said, saying what rule you wish to ignore makes it more clear why you put the disable line there in the first place. - anyone
  • @FilipDupanović Maybe eslint should have a meta rule for requiring explicit rule to ignore? Maybe it already does. - anyone
  • @Josef.B there's a non-standard rule for that: github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/… It works really nicely. - anyone

Or for multiple ignores on the next line, string the rules using commas

// eslint-disable-next-line class-methods-use-this, no-unused-vars

Answered   2023-09-21 08:08:32

My answer, similar to others given, but shows how you can also add a comment to yourself on the same line.

// eslint-disable-line // THIS WON"T WORK

Use -- if you also need to write a comment on that line (eg. maybe why eslint is disabled)

// eslint-disable-line -- comment to self (This DOES work)

Can be used in conjunction with specific eslint rules to ignore:

// eslint-disable-line no-console -- comment to self (This Also Works!)

Answered   2023-09-21 08:08:32

  • Excellent. This is what I was looking for, nice and clean with a custom comment. Mine is: /* eslint-disable-next-line import/no-unresolved -- file is created at runtime */ - anyone

To disable a single rule for the rest of the file below:

/* eslint no-undef: "off"*/
const uploadData = new FormData();

Answered   2023-09-21 08:08:32

  • or /* eslint-disable no-new */ - anyone

To disable all rules on a specific line:

alert('foo'); // eslint-disable-line

Answered   2023-09-21 08:08:32

To disable all rules on a specific line:

// @ts-ignore
$scope.someVar = ConstructorFunction();

Answered   2023-09-21 08:08:32

  • As of this date in 2023, this works in VSCode, and in typescriptlang.org Playground, when all other ESLint rules provided here do not work. There is probably something specific to the ESLint rules themselves, that preclude the other directives from working, perhaps a difference between TS and ES? Anyone? - anyone
  • @TonyG In VS 2022 with TS/React, I had to add a qualifier before the rule name: // eslint-disable-next-line @typescript-eslint/no-empty-interface. The warning tooltip told me the name. - anyone

single line comment did not work for me inside a react dumb functional component, I have used file level disabling by adding /* eslint-disable insertEslintErrorDefinitionHere */

(normally if you are using vs code and getting eslint error, you can click on the line which gives error and a bulb would show up in vs code, right click on the light bulb and choose any disable option and vs code will do it for you.)

Answered   2023-09-21 08:08:32

I have disabled that perticular line some thing below

<TableRow
   key={index}
   className={classes.tableRow}
   onClick={this.onSelectedValue.bind(this, user)} // eslint-disable-line
>{index}
</TableRow>

Answered   2023-09-21 08:08:32

You can add the files which give error to .eslintignore file in your project.Like for all the .vue files just add /*.vue

Answered   2023-09-21 08:08:32

  • it asked for one line, not the whole file - anyone
  • He could also stop using eslint... If your just going to ignore every file that has issue why use it at all? - anyone