首页 > 解决方案 > 以错误的顺序捆绑加载脚本

问题描述

我在jQuery is not defined errorjQuery 之前加载了一个来自 jQuery 的验证。

我不确定这是否与使用 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,但可能是错误的,它会首先处理包中显式命名的脚本,然后是符号命名的脚本。尽管这些都是明确命名的脚本。

有什么我遗漏的东西或一些关于如何解决这个问题的解决方案吗?

标签: asp.net-mvcaspnetboilerplate

解决方案


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

所以几乎我定义了我自己的 BundleOrderer 调用AsIsBundleOrder,它实现IBundleOrderer了只是按原样返回文件,并将其设置为要在 BundleConfig 中使用的排序器。

这行得通,尽管仍然没有给我一个完整的答案,为什么(我认为的重要原因)默认排序器仅在我使用 jQuery 的缩小版本时才将 jQuery validate 提升为在 jQuery 之前。


推荐阅读