1

我刚刚为 VS2012 安装了 JSLint 扩展,并且我使用的一些 JSON 设置文件出现异常。使用默认设置会导致我的构建被自动取消,因此由于 JSLint 错误,我不得不关闭取消构建的选项。没有理由不识别 JSON,因为它是有效的 Javascript。我得到的例外情况是“预期:';'”。我检查了 JSLint 选项,但找不到解决此问题的选项,有人知道方法吗?示例设置文件是:

{
  "SharePath": "\\\\172.26.168.60\\main\\Temp\\Webclient",
  "LocalFilePath": "C:\\\\Builds\\WebClient",
  "BuildCount": "10", 
  "AppVersions": [
    {
      "VersionName": "hotfix",
      "BuildPath": "\\\\10.18.0.53\\Builds\\WebClient_hotfix"
    },
    {
      "VersionName": "main",
      "BuildPath": "\\\\10.18.0.53\\Builds\\WebClient_main"
    },
    {
      "VersionName": "master",
      "BuildPath": "\\\\10.18.0.53\\Builds\\WebClient_master"
    }
  ]
}

谢谢!

4

1 回答 1

1

根据伟大的道格拉斯·克罗克福德 (Douglas Crockford) 规定的 JSLint 更严格的规则,所有表达式的末尾都应该有一个分号。JSON 对象的声明是一个表达式——在末尾添加一个分号,你应该是金色的。虽然 JavaScript 本身并不强制你用分号结束每个表达式,但如果你不这样做,它会在一些奇怪的情况下导致编译问题,所以 JSLint 会强制你这样做。您应该认识到,通过使用 JSLint,您同意使用更严格的 JavaScript 子集,然后是语言规范所规定的。然而,权衡是这个子集比全套语言更不容易出错,因此使用起来更安全。

{
  "SharePath": "\\\\172.26.168.60\\main\\Temp\\Webclient",
  "LocalFilePath": "C:\\\\Builds\\WebClient",
  "BuildCount": "10", 
  "AppVersions": [
    {
      "VersionName": "hotfix",
      "BuildPath": "\\\\10.18.0.53\\Builds\\WebClient_hotfix"
    },
    {
      "VersionName": "main",
      "BuildPath": "\\\\10.18.0.53\\Builds\\WebClient_main"
    },
    {
      "VersionName": "master",
      "BuildPath": "\\\\10.18.0.53\\Builds\\WebClient_master"
    }
  ]
}; // <--- ';' HERE

网上的 JSLint 似乎在这里传递了对象,而 VS2012 JSLINT 没有的原因是在线的 JSLint 将对象视为 JSON 对象,并且只检查对象的那部分。您正在使用的 VS2012 将您的 JSON 文件视为完整的 javascript 文件,并将该 JSON 对象视为更大 JS 表达式的一部分(所有 JSON 对象最终都必须如此),因此它检查的内容比在线 JSLint 编辑器要多. (它正在检查在线 JSLint 不存在的表达式语法。简单来说,JSLint 在线工具默认为更简单的模式,然后 VS2012 正在运行。我已经更新了我的答案,这将强制在线 JSLint 运行完整JS 表达式检查。尝试将其粘贴到 onlie 工具中,看看会发生什么。(提示 JSLint 不高兴)

var test2 = "Hey JSLint Im a JS file, not a JSON object danm it!"; 
{
    "SharePath" : "\\\\172.26.168.60\\main\\Temp\\Webclient",
    "LocalFilePath" : "C:\\\\Builds\\WebClient",
    "BuildCount" : "10",
    "AppVersions" : [
        {
            "VersionName": "hotfix",
            "BuildPath": "\\\\10.18.0.53\\Builds\\WebClient_hotfix"
        },
        {
            "VersionName": "main",
            "BuildPath": "\\\\10.18.0.53\\Builds\\WebClient_main"
        },
        {
            "VersionName": "master",
            "BuildPath": "\\\\10.18.0.53\\Builds\\WebClient_master"
        }
    ]
}
于 2013-03-19T18:17:09.690 回答