読者です 読者をやめる 読者になる 読者になる

重大な JavaScript エラーが検出されました\n\nSCRIPT1004: ';' がありません。

.NET ASP.NET MVC5 TypeScript

こんにちは。beaglesoftの真鍋です。

TypeScriptで開発をしていて、実行しようとしたときに見慣れないエラーが表示されて2時間くらいはまりました。この手のものははまって経験値高めるしかないんですかね。

11 の行 http://localhost:49341/Scripts/xxxx.ts、列 1 で重大な JavaScript エラーが検出されました\n\nSCRIPT1004: ';' がありません。

開発環境はVisualStudio 2015で動作していたブラウザはIE 11です。

ちなみに、Chromeだと以下のようなエラーメッセージになります。

Uncaught ReferenceError: SearchSubWindow is not defined

いや、本当に何が何やらわからず、かなりいろいろと設定を考えたりしました。キャッシュじゃないかとかいろいろ。ただ、後から思えば問題の端緒は結構転がっていたんですよね。

これ、何が原因だったかというと、BundleConfig.csに定義しているJavaScriptのファイルの拡張子がtsだったのが原因でした。

  public class BundleConfig
{
    // バンドルの詳細については、http://go.microsoft.com/fwlink/?LinkId=301862  を参照してください
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
            "~/Scripts/jquery-{version}.js"));

        bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
            "~/Scripts/jquery.validate*"));


        bundles.Add(new ScriptBundle("~/bundles/libs").Include("~/Scripts/lib/momentjs/moment.min.js",
            "~/Scripts/lib/mathjs/math.min.js", "~/Scripts/lib/dhtmlx/dhtmlx.js"));

        bundles.Add(new ScriptBundle("~/bundles/ts").Include(
            "~/Scripts/Commons/Ajax/iExecuteCallback.js",
            "~/Scripts/Commons/numericUtils.js", 
            ...
           
            "~/Scripts/Hoge/typescriptFile.ts", // このファイルの拡張子が ts になっている!!
            ...
    }
}

本当に単純な間違いなのですが、原因と起こりうる事象の関連がつかめなくて全然違うところを探し回ってました。