VS2012的JSLint扩展无法识别JSON

时间:2013-03-19 18:11:36

标签: javascript visual-studio-2012 jslint

我刚安装了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"
    }
  ]
}

谢谢!

1 个答案:

答案 0 :(得分: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在线工具默认为simpiler模式,然后VS2012正在运行。我已经更新了我的答案,这将强制onlint 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"
        }
    ]
}