私のプロジェクトのjqueryで発生した小さな問題について混乱しています。このプロジェクトは、Visual Studio 11 の MVC4 サイトです。
問題は、jQuery がバンドルに含まれていないことです。1.7.2 に更新する前は機能していたようですが、確かではありません。
バンドルされたファイルの上にjQueryファイルのコメントが表示されますが、コードが見つかりません。ただし、他のすべてのファイルは含まれているようです (私自身のスクリプトと jquery ui ファイル)。
バンドル フィルタを試し、独自のバンドルを作成しましたが、何も機能していないようです。
関数が見つからないため、ページが読み込まれると、すべての Java スクリプトがクラッシュするだけなので、助けていただければ幸いです。これは、Javaスクリプトファイルを通常どおりに含めるだけで機能します。
編集:
Global.asax:
protected void Application_Start()
{
BundleTable.Bundles.EnableDefaultBundles();
}
_Layout.cshtml:
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>
更新 1:
jQuery ファイルにいくつかのコードを追加し、バンドルされたファイルの先頭にこれが含まれています。
function Test(){ }
それからこれに変更し、今度はコードがありませんでした。
(function Test(){ })
奇妙なことに、UI ファイルなどの他の jQuery ファイルは削除されず、同じように処理されます。
編集:これは意図されているようです
更新 2:
もう少しテストして、壊れるファイルを見つけました。これらのファイルのいずれかをカスタムバンドルに含めると、壊れます
- jquery.validate.js
- jquery.validate.unobtrusive.js
- jquery.unobtrusive-ajax.min.js
それらの前に私はこれらを持っていて、エラーなしで動作します
- jquery-1.7.2.min.js
- jquery-ui-1.8.19.min.js
- bootstrap.min.js
これらのファイルをスクリプトに通常どおり含めて<script src="~/Scripts/jquery.validate.js"></script>
、エラーなしで正常に機能する場合、それはまだ奇妙です。
ただし、作業ファイルをバンドルしてから、通常どおり非作業ファイルを追加すると、それでも壊れます
_Layout.cshtml:
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/myBundle")"></script>
<script src="~/Scripts/jquery.validate.js"></script>
Global.asax:
var bundle = new Bundle("~/js", new JsMinify());
bundle.AddFile("~/Scripts/jquery-1.7.2.min.js");
bundle.AddFile("~/Scripts/jquery-ui-1.8.19.min.js");
bundle.AddFile("~/Scripts/bootstrap.min.js");
BundleTable.Bundles.Add(bundle);
編集:バンドルされたjqueryファイルで何かが変更されたようで、検証プラグインが壊れます
回避策
更新前に古いファイルを追加しようとしましたが、うまくいきました! クラッシュしたのは NuGet の新しい jQuery UI 1.8.19 であることがわかりました。
私は彼らのサイトからjquery uiを直接ダウンロードし、代わりにそれを使用しましたが、うまくいきました!
そのため、jquery ui nuget バージョンの何かが変更され、バンドルがピックアップされて変更/削除されたため、壊れているようです..
どの部分を責める?jQuery UI NuGet パッケージまたは mvc4 バンドル? そして、バンドルの問題に対する解決策はありますか?