【问题标题】:Turning off eslint rule for a specific line关闭特定行的 eslint 规则
【发布时间】:2015-02-28 04:44:34
【问题描述】:

为了关闭 JSHint 中特定行的 linting 规则,我们使用以下规则:

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

我一直在尝试为 eslint 找到上述内容的等价物。

【问题讨论】:

  • 使用eslint-disable-next-line:
  • 从 ESLint v7 开始,您可以 specify the reason 在同一评论中禁用给定规则。
  • 禁用多个特定规则:// eslint-disable-line no-console, max-len

标签: javascript jshint eslint


【解决方案1】:

禁用下一行:

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

或者使用单行语法:

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

eslint docs

【讨论】:

  • 现在我遇到了另一个 eslint 问题:警告 Unexpected comment inline with code no-inline-cmets :(
  • 非常适合我。此外,如果您不关心特异性,您可以执行//eslint-disable-line,它似乎会禁用给定行的所有规则。
  • 出于某种原因,这对我不起作用;我正在运行 eslint 3.8.0。我必须使用 /*eslint-disable */ 和 /*eslint-enable */。知道为什么会这样吗?我喜欢单行方法
  • @SomethingOn 有同样的问题,原来我打开了--no-inline-configPrevent comments from changing config or rules
  • 不适用于“gulp-eslint”:“^3.0.1”。我必须使用 /*eslint-disable */
【解决方案2】:

更新

ESlint 现已更新,提供了一种更好的方法来禁用单行,请参阅 @goofballLogic 的 excellent answer

旧答案:

你可以使用下面的

/*eslint-disable */

//suppress all warnings between comments
alert('foo');

/*eslint-enable */

这在docs的“配置规则”部分中略显不足;

要禁用整个文件的警告,您可以在文件顶部添加注释,例如

/*eslint eqeqeq:0*/

【讨论】:

  • 顺便说一句,// 注释语法似乎不起作用……
  • 另外,我正在寻找为 html 中的一行禁用 eslint。这有效:thumbsup:
【解决方案3】:

您还可以通过在启用(打开)和禁用(关闭)块中指定特定规则/规则(而不是全部)来禁用它们:

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

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

/* eslint-enable no-alert */

通过上面@goofballMagic 的链接:http://eslint.org/docs/user-guide/configuring.html#configuring-rules

【讨论】:

  • 确保你的 eslint cmets 通过 eslint! -> Expected exception block, space or tab after '/*' in comment. :)
  • 我使用prettiereslint 的组合来格式化我的代码。这不允许内联 cmets。许多/* eslint-disable-next-line ... */ 语句很难在代码中阅读和发现。
【解决方案4】:

来自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

【讨论】:

    【解决方案5】:

    回答

    您可以使用内联注释:// eslint-disable-next-line rule-name

    示例

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

    参考

    ESLint - Disabling Rules with Inline Comments

    【讨论】:

    【解决方案6】:

    一般的行尾注释 // eslint-disable-line 后面不需要任何内容​​:无需查找代码来指定您希望 ES Lint 忽略的内容。

    如果你需要忽略任何语法而不是快速调试,你就会遇到问题:为什么不更新你的 delint 配置?

    我喜欢// eslint-disable-line 允许我插入console 以快速检查服务,而我的开发环境不会因为违反协议而阻碍我。 (我通常禁止 console,并使用日志记录类 - 有时基于 console。)

    【讨论】:

    • 没有冒犯,但这与接受的答案相同,所以不确定这有什么帮助?
    • 不要这样做。如果您有 5 个错误在线,它们都将被忽略。始终明确设置要忽略的规则,否则孩子们会弄得一团糟。
    • @FilipDupanović 如果您的程序员可以在一行代码中弄得一团糟,那只是因为 eslint 没有在他们的肩膀上寻找一行代码。您的公司确实有其他问题...也就是说,说出您希望忽略的规则可以更清楚地说明您首先将禁用行放在那里的原因。
    • @FilipDupanović 也许 eslint 应该有一个要求显式规则忽略的元规则?也许它已经做到了。
    • @Josef.B 有一个非标准规则:github.com/sindresorhus/eslint-plugin-unicorn/blob/master/docs/… 它工作得非常好。
    【解决方案7】:

    或者对于下一行的多个忽略,使用逗号将规则串起来

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

    【讨论】:

      【解决方案8】:

      为以下文件的其余部分禁用单个规则:

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

      【讨论】:

      • /* eslint-disable no-new */
      【解决方案9】:

      禁用特定行上的所有规则:

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

      【讨论】:

        【解决方案10】:

        单行注释在反应哑功能组件中对我不起作用,我通过添加来使用文件级别禁用 /* eslint-disable insertEslintErrorDefinitionHere */

        (通常如果您使用 vs code 并遇到 eslint 错误,您可以单击给出错误的行,并且在 vs code 中会显示一个灯泡,右键单击灯泡并选择任何禁用选项,vs code 将为你做。)

        【讨论】:

          【解决方案11】:

          我的回答,与其他人给出的类似,但展示了如何在同一行中为自己添加评论。

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

          如果您还需要在该行上写评论(例如,为什么禁用 eslint),请使用 --

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

          可以结合具体的eslint规则来忽略:

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

          【讨论】:

            【解决方案12】:

            您可以在项目中添加给 .eslintignore 文件带来错误的文件。就像所有 .vue 文件一样,只需添加 /*.vue

            【讨论】:

            • 它只要求一行,而不是整个文件
            • 他也可以停止使用 eslint... 如果您只是要忽略每个有问题的文件,为什么要使用它?
            猜你喜欢
            • 2016-04-18
            • 2016-08-28
            • 2020-04-17
            • 2020-03-25
            • 2023-01-05
            • 2021-05-21
            • 1970-01-01
            • 2017-05-10
            相关资源
            最近更新 更多