我对我在项目中遇到的 jquery 的一个小问题感到困惑。该项目是 Visual Studio 11 中的 MVC4 站点。
问题是 jQuery 不包含在捆绑中,并且在我更新到 1.7.2 之前它似乎一直在工作,但不能确定。
我可以在捆绑文件的顶部看到 jQuery 文件的注释,但找不到它的任何代码。不过,似乎包括了所有其他文件(我自己的脚本和 jquery ui 文件)。
我已经尝试过捆绑过滤器并创建自己的捆绑包,但似乎没有任何效果。
我真的很感激任何帮助,因为当页面加载时,所有 java 脚本都会因为找不到函数而崩溃。如果我只是正常包含 java 脚本文件,这确实有效。
编辑:
全球.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(){ })
奇怪的是,其他 jQuery 文件,如 UI 文件并没有被删除,而且它们的方式相同。
编辑:似乎这是有意的
更新 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>
全球.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 捆绑?捆绑问题有解决方案吗?