【问题标题】:grunt-contrib-jshint doesn't complain about console.loggrunt-contrib-jshint 不会抱怨 console.log
【发布时间】:2013-05-02 11:10:49
【问题描述】:

通过以下设置,jsHint 不会抱怨 console.log 语句,但仍会报告 debugger 语句:

jshint: {
      files: [
        'Gruntfile.js',
        'js/**/*.js',
        'tests/*.js',
      ],
      options: {
        curly: true,
        immed: true,
        noarg: true,
        expr: true,
        quotmark: 'single',
        maxdepth: 3,
        browser: true,
        eqnull: true
      }
    },

【问题讨论】:

    标签: gruntjs jshint


    【解决方案1】:

    据我所知,JSHint 从未警告过对console 的引用。那里没有专门处理此类引用的代码。

    console 被简单地视为一个标识符,应该从任何引用它的上下文中定义和访问(这是正确的,因为这就是它的全部内容)。

    因此,您可以通过让 JSHint 警告所有未定义的变量来警告使用 console。只需将undef 选项设置为true

    然后,如果您想允许使用console,您可以将其添加到您的globals 指令或将devel 选项设置为true(隐式将其添加到您的globals 指令) .

    【讨论】:

    • 好的,被devel 选项弄糊涂了。对我来说,听起来 jsHint 总是会抱怨 console,我可以通过 devel: true 将其静音
    • @AndreasKöberle - 是的,文档似乎不太清楚。我可能会在 GitHub 上打开一个问题,看看是否可以更清楚一点。
    • 对于一年后阅读此答案的人来说,devel 文档现在非常明确:jshint.com/docs/options/#environments
    【解决方案2】:

    我也有这个问题。

    我将"undef" 设置为true,但它仍然不起作用。

    我试过"devel" 无济于事。

    最后 - 我只是像这样使用"globals" 变量:

    "globals" : { 
             "console": true
    }
    

    这就是诀窍。

    【讨论】:

    • 您可以只使用"console": false 来允许对console 对象进行只读访问。
    【解决方案3】:

    我遇到了这个问题,我想要对 console 的引用发出警告,并且有 undef: truedevel: false,但仍然没有收到警告。原来我也有node: true,它取消了那个警告。将其更改为node: false 后,它起作用了!

    【讨论】:

    • 这行得通。有没有办法只在 console.log 而不是 console.error 上发出警告?
    • 我不这么认为。当将console 设置为全局时,它将同时包含 .log 和 .error
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多