1

次のJavaScriptライブラリを使用してMVC4で実行されているWebサイトがあります。jQuery、jQueryValidate、Bootstrap、FineUploader、MaskedInput、Knockout、Modernizr。アプリ固有のJavaScriptもそこにあります。これらはすべて、System.Web.Optimization名前空間のスクリプトバンドル機能を使用してロードされます。私のバンドルはこのように見えます。

bundles.Add(new ScriptBundle("~/bundles/scripts").Include(
    "~/Scripts/jquery-1.7*",
    "~/Scripts/modernizr.*",
    "~/Scripts/bootstrap*",
    "~/Scripts/jquery.validate.*",
    "~/Scripts/jquery.maskedinput-1.3.*",
    "~/Scripts/MyApp*",
    "~/Scripts/jquery.unobtrusive*",
    "~/Scripts/knockout-*",
    "~/Scripts/jquery.fineuploader-3.0.js"));

しかし、何らかの理由で、サイトが私の開発システムで正常に動作している間、およびテスト時に、JavaScriptエラーで本番環境で失敗します。エラーは私には意味がありません...

Uncaught ReferenceError: options is not defined

今、私がjavascriptファイルをチェックすると、もちろんすべてが縮小されて圧縮されているので、そこから何かを解読することはできません。他の誰かがバンドリングからこのような奇妙な行動に遭遇しましたか?

4

1 に答える 1

3

それで、このことと必死に戦った後(壊れたビルドを公開していたので)、デバッグビルドであっても常に最適化を適用するように開発コピーを切り替えました。

BundleTable.EnableOptimizations = true;

そして、私は今、私のマシンで同じ問題を抱えていました(少なくともそれは一貫しています)。このバージョンで何が変更されたかについて考え始めました。前回の公開以降に変更されたのは、Nugetパッケージからの更新と管理タスクのコード変更だけでした。私はNugetパッケージの変更を追跡し始め、手がかりを見つけることを期待して、javascriptが変更されたものをチェックインしました。それぞれを調べた後、ページをテストして問題は解決しましたが、まだ変更を加えていません。しかし、私がそれを見ようとしたときに私にプロンプ​​トを与えるものに出くわしました。

一貫性のない行末

これを見たとき、ぼんやりと[はい]をクリックしていましたが、問題が解決したときに変更を元に戻してサイトを再試行すると、JavaScriptエラーが再び発生しました。このファイルにいくつかの変更を貼り付けて、ajaxリクエストをトリガーする要素にコンテキストを設定しましたthis。以前にこれを行ったことがありますが、Nugetからソースパッケージを更新した後、変更を再適用する必要がありました。当時、私はこれをSublimeで行ったと思いますが、Linuxスタイルの行末にコピーされたと思います。

簡単に言うと、System.Web.Optimization名前空間のバンドリング機能にバグがあり、Linuxスタイルの行末を詰まらせているようです。これが、この問題に苦しむ可能性のある他の人の助けになることを願っています。

于 2013-02-26T22:01:26.783 に答える