1

VS2012 用の JSLint 拡張機能をインストールしたところ、使用している一部の JSON 設定ファイルで例外が発生します。デフォルト設定を使用すると、ビルドが自動的にキャンセルされたため、JSLint エラーのためにビルドをキャンセルするオプションをオフにする必要がありました。JSON は有効な Javascript であるため、JSON を認識しない理由はありません。私が受け取る例外は、「期待される: ';'」と言っています。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が完全に実行されるように強制するforへの回答を更新しましたJS 式チェック これを onlie ツールに貼り付けてみて、何が起こるか見てみましょう. (HINT 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 に答える