JSHint 全局选项在 .jshintrc 中不起作用

JSHint globals option is not working in .jshintrc

我正在使用 Brackets 1.2 and the extension brackets-jshint。这是我的项目根目录中的 .jshintrc

{
    'bitwise': true,
    'boss': true,
    'camelcase': true,
    'curly': true,
    'devel': true,
    'eqeqeq': true,
    'eqnull': true,
    'expr': true,
    'forin': true,
    'iterator': false,
    'latedef': true,
    'multistr': false,
    'nocomma': true,
    'noarg': true,
    'noempty': true,
    'nonbsp': true,
    'nonew': true,
    'quotmark': 'single',
    'undef': true,
    'unused': true,
    'globals': {
        '$': true,
        'document': true,
        'jQuery': true,
        'window': true
    }
}

globals选项无效,全局变量白名单仍在被JSHint警告

我也试过这些:

globals: true
jquery: true
devel: true 

但是没有成功,$jquerywindowdocumentalert仍然被警告。

请确保您已禁用 JSLint,这是默认情况下随 Brackets 一起提供的 linter。 您可以通过将此代码段添加到您的 brackets.json(通过 Debug > Show Preferences File 打开)来实现:

"language": {
    "javascript": {
        "linting.prefer": "JSHint",
        "linting.usePreferredOnly": true
    }
}

您必须在 .jshintrc 中用 double 替换 single 引号 :) 这个答案很短,所以我将添加一些解释......

只需打开 Debug » Developers tools 尝试验证一些 JavaScript 文件 – 你可以在调试控制台中看到

JSHint: error parsing /project/path/.jshintrc. Details: SyntaxError: Unexpected token '

负责读取 .jshintrc 的方法如下所示:

try {
    config = JSON.parse(removeComments(content));
} catch (e) {
    console.error("JSHint: error parsing " + file.fullPath + ". Details: " + e);
    result.reject(e);
    return;
}

JSON.parse 实现了 http://www.ietf.org/rfc/rfc4627.txt - according to ECMAScript Specification' 没有位置。

来自 rfc 4627 描述 JSON 的唯一有效结构是

string = quotation-mark *char quotation-mark

char = unescaped /
       escape (
           %x22 /          ; "    quotation mark  U+0022
           %x5C /          ; \    reverse solidus U+005C
           %x2F /          ; /    solidus         U+002F
           %x62 /          ; b    backspace       U+0008
           %x66 /          ; f    form feed       U+000C
           %x6E /          ; n    line feed       U+000A
           %x72 /          ; r    carriage return U+000D
           %x74 /          ; t    tab             U+0009
           %x75 4HEXDIG )  ; uXXXX                U+XXXX

escape = %x5C              ; \

quotation-mark = %x22      ; "