2013-03-19 103 views
1

我剛剛安裝了VS2012的JSLint擴展,並且我收到了一些我使用的JSON設置文件的異常。使用默認設置會導致我的構建被自動取消,所以我必須關閉取消構建的選項,因爲JSLint錯誤。沒有理由不承認JSON,因爲它是有效的Javascript。我得到的例外說「預期:';'」。我檢查了JSLint選項,並找不到解決此問題的選項,有誰知道一種方法?示例設置文件是:VS2012的JSLint擴展無法識別JSON

{ 
    "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

根據所決定由偉大的道格拉斯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正在運行。我已經更新了答案,這將強制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" 
     } 
    ] 
} 
+0

謝謝!擴展仍然不承認它,但是。另外,如果我貼JSON原樣是進入JSLint.com它說它是完美的 – PlantationGator 2013-03-19 18:26:50

+0

更新我的答案,解釋你爲什麼看到這個 – gbtimmon 2013-03-19 18:40:12

+0

再次感謝,這是有道理的我猜JSLint的製造商不喜歡JS文件的想法,其中包含只有一個獨立的對象,這是我(AB)使用它。基本上我已經取代app.config機智h settings.js,因爲創建自定義對象非常簡單,並且如果來自JSON(但是這是另一個線程的主題),則可以進行解析。 – PlantationGator 2013-03-19 19:30:26

相關問題