【问题标题】:How to tell JSHint to ignore all undefined variables in one file?如何告诉 JSHint 忽略一个文件中的所有未定义变量?
【发布时间】:2013-06-25 21:41:31
【问题描述】:

在 Karma 测试中,有很多 JSHint 抱怨的全局变量和函数(它已集成到我的编辑器中)。

如何告诉 JSHint 忽略这个特定文件中的所有未定义变量?我希望/* jshint undef: false */ 关闭这些警告,但它没有。

【问题讨论】:

    标签: javascript jshint


    【解决方案1】:

    只需在您的 .jshintrc 文件中添加此规则即可。

    "-W117": true
    

    这将忽略所有警告说,'* 未定义。'

    【讨论】:

    • 但是你有应该定义的变量的问题,但是你犯了一个语法错误。我不会关闭此警告。
    • 最好按照@JamesAllardice 上面的建议去做,只需将其放在导致问题的文件中即可。
    【解决方案2】:

    我发现自己使用jshint ignore:line 来满足这一需求:

    var 未使用变量; // jshint 忽略:行

    这允许 jshint 继续对这种情况进行有用的检查,但是如果有明确的理由忽略特定声明而不是添加它,这既解决了问题,又以任何查看代码的人都可以立即看到的方式来解决问题。

    一个很好的例子(至少对我来说)是当使用 ES6 的解构来非法使用一组你可能会或可能不会一直使用的快捷方式时。在 Ember 中,我经常使用许多与之相关的方法,例如 typeOfcomputed。与其总是引用 Ember.computed,不如只引用 computed 并在我的所有 Ember 对象的顶部添加类似以下内容:

     const { computed, $, A, run, on, typeOf, debug, get, set } = Ember;    // jshint ignore:line
    

    【讨论】:

      【解决方案3】:

      今天下午使用 jshint 遇到了这个问题。 以下修复对我有用。 尝试使用“predef”,而不是使用“globals”。 例如:

      {
        /*
         * RELAXING OPTIONS
         * =================
         */
      
        // Suppress warnings about == null comparisons.
        "eqnull": true,
      
        "predef" : ["describe", "expect", "it", "inject", "beforeEach", "angular"]
      }
      

      【讨论】:

        【解决方案4】:

        告诉 JSHint 关于全局变量的正确方法是使用 globals 指令。例如:

        /*globals globalFunction, anotherGlobal, oneMore */
        

        当 JSHint 遇到任何列出的标识符时,这将防止“{a} 未定义”警告。

        或者,如果您真的想忽略该文件中的所有“未定义”警告,并且您使用的是 JSHint 1.0.0 或更高版本,则可以简单地关闭该特定警告:

        /*jshint -W117 */
        

        【讨论】:

        • 谢谢,但您是从哪里得知这件事的? docs 没有提到命令行参数,jshint --help 希望我知道我需要帮助的参数的名称。
        • @DanRoss - 我想我是从阅读源代码中发现的。我在构建jslinterrors.com时对JSHint源进行了大量挖掘,可能对您有用。
        猜你喜欢
        • 2015-03-02
        • 2013-10-13
        • 2018-03-06
        • 1970-01-01
        • 2011-07-03
        • 2013-07-16
        • 1970-01-01
        • 1970-01-01
        • 2014-06-09
        相关资源
        最近更新 更多