5

mvc4 コースのバンドル機能の使用

キャッチされていない SyntaxError: 予期しないトークン <

ロード中。debug="true"すべてが例外のように機能します。

エラーを解決するにはどうすればよいですか、またはスクリプトのバンドル機能を無効にすることはできますか?

解決済み
どのディレクトリとも一致しないようにバンドル名を変更しました

4

3 に答える 3

8

このエラーの原因の質問に答える前に、まずエラーが発生した場所を特定する必要があります。バンドルされている場合のコードの構文の唯一の違いは、コードが縮小されていることです。これを行う非常に簡単な方法は、 a のBundle代わりに aを使用することですScriptBundle:

        var thirdParty = new Bundle("~/bundles/thirdParty").Include(
            "~/Scripts/jquery-{version}.js",
            "~/Scripts/bootstrap.js",
            "~/Scripts/jquery-ui-{version}.js",
            "~/Scripts/jquery.mockjson.js",
            "~/Scripts/jQuery.XDomainRequest.js",
            "~/Scripts/knockout-{version}.js"
            );

        thirdParty.Transforms.Clear();

        bundles.Add(thirdParty);

ここで、複数の JavaScript バンドルがある場合は、問題のバンドルが見つかるまでこれを 1 つずつ実行します。

これらの問題をデバッグする唯一の方法は、バンドルを半分に分割してさらに分解することです。

        var thirdParty1 = new Bundle("~/bundles/thirdParty1").Include(
            "~/Scripts/jquery-{version}.js",
            "~/Scripts/bootstrap.js",
            "~/Scripts/jquery-ui-{version}.js"
            );

        bundles.Add(thirdParty1);

        var thirdParty2 = new ScriptBundle("~/bundles/thirdParty2").Include(
            "~/Scripts/jquery.mockjson.js",
            "~/Scripts/jQuery.XDomainRequest.js",
            "~/Scripts/knockout-{version}.js"
            );

        bundles.Add(thirdParty2);

2 つのバンドルのうちの 1 つの縮小のみを無効にしたことに注意してくださいthirdParty1@Scripts.Render新しいバンドルを指すように更新してください。ビルドしてリロードすると、引き続きエラーが発生するか、またはエラーが発生せず、問題のあるコードがどちらの半分に含まれているかがわかります。ただし、必ず両方の方法でテストしてください。私の例では縮小化thirdParty1と非縮小化を行いthirdParty2、その逆も同様で、何か他のことが起こっていないことを確認してください。また、DevTools または開いているブラウザー デバッガーを保持し、バンドルのソースを調べて、期待どおりに動作していることを確認することもできます。

thirdParty1スクリプトが多数ある場合は、縮小されたバンドル (私の場合) から縮小されていないバンドル ( thirdParty2) からスクリプトを一度に 1 つずつ、またはチャンクで移動して続行します。間に再構築することを忘れないでください。スクリプトの組み込み順序を変更しないように注意してください。

これで、少なくとも問題のあるファイルにたどり着くはずです。うまくいけば、「<」を検索すると答えが得られます。

それが役立つことを願っています。

于 2013-07-15T18:16:59.297 に答える
0

彼のソリューションは、バンドルの名前をディレクトリとは異なる名前に変更するのに役立ちました。私は私のようにグループ化していました:

@Styles.Render("~/jqueryui")
@Scripts.Render("~/jqueryui")

jquery UI スタイルでこのようにするとバグがあるようです。バンドルの名前を次のように変更しました。

@Styles.Render("~/jqueryuiz")
@Scripts.Render("~/jqueryui")

これで修正されました。したがって、スクリプトはこのように影響を受けていないようであり、同様のバンドルも影響を受けていないようです。約 20 セットのバンドルをロードしましたが、問題を引き起こしているのはこれだけです。

于 2014-07-13T22:29:18.460 に答える