捆绑加载脚本的顺序错误

时间:2018-05-14 19:14:13

标签: asp.net-mvc aspnetboilerplate

我从jQuery中加载jQuery validate获得jQuery is not defined error

我不确定这是否与使用ASP.net Boilerplate有关,但在捆绑配置中我有以下内容:

 bundles.Add(
            new ScriptBundle("~/Bundles/vendor/js/bottom")
                .Include(
                    "~/lib/json2/json2.js",
                    "~/lib/jquery/dist/jquery.min.js",
                    "~/lib/bootstrap/dist/js/bootstrap.min.js",
                    "~/lib/moment/min/moment-with-locales.min.js",
                    "~/lib/jquery-validation/dist/jquery.validate.min.js",
                    "~/lib/blockUI/jquery.blockUI.js",
                    "~/lib/toastr/toastr.min.js",
                    "~/lib/sweetalert/dist/sweetalert.min.js",
                    "~/lib/spin.js/spin.min.js",
                    "~/lib/spin.js/jquery.spin.js",
                    "~/lib/bootstrap-select/dist/js/bootstrap-select.min.js",
                    "~/lib/jquery-slimscroll/jquery.slimscroll.min.js",
                    "~/lib/Waves/dist/waves.min.js",
                    "~/lib/push.js/push.min.js",
                    "~/Abp/Framework/scripts/abp.js",
                    "~/Abp/Framework/scripts/libs/abp.jquery.js",
                    "~/Abp/Framework/scripts/libs/abp.toastr.js",
                    "~/Abp/Framework/scripts/libs/abp.blockUI.js",
                    "~/Abp/Framework/scripts/libs/abp.spin.js",
                    "~/Abp/Framework/scripts/libs/abp.sweet-alert.js",
                    "~/lib/flatpickr/dist/flatpickr.min.js",
                    "~/js/admin.js",
                    "~/js/main.js",
                    "~/Scripts/jquery.signalR-2.2.3.js",
                    "~/Views/Shared/_Layout.js"
                )
            );

所以我使用的是jQuery的缩小版本和jQuery.Validate的缩小版本。一旦我使用jQuery的缩小版本并加载页面,jquery.validate.min.js就是第一个加载的脚本,并且按预期抛出jQuery is not defined. error. 虽然我不使用jQuery(jquery.js)的缩小版本,但脚本会以正确的顺序加载。

ASP.NET Boilerplate是否在我不知道的捆绑包中使用任何自定义文件排序?我确实相信MVC,但可能是错的,它将首先在bundle中处理显式命名的脚本,然后用符号命名脚本。虽然这些都是明确命名的脚本。

我有什么遗漏或解决方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我最后使用了这里的答案:https://stackoverflow.com/a/11981271/4201348

所以我定义了我自己的名为AsIsBundleOrder的BundleOrderer,它实现了IBundleOrderer,只是按原样返回文件,并将其设置为BundleConfig中使用的订货人。

虽然仍然没有给我一个完整的答案,但为什么(在我看来这个重要原因)默认的orderer只是在我使用jQuery的缩小版本时才将jQuery验证提升到jQuery之前。< / p>