我刚安装了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"
}
]
}
谢谢!
本
答案 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"
}
]
}