在回答导致此错误的原因之前,您必须首先弄清楚错误发生的位置。捆绑时代码语法的唯一区别是它被缩小了。一个非常简单的方法是使用Bundle
代替ScriptBundle
:
var thirdParty = new Bundle("~/bundles/thirdParty").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/bootstrap.js",
"~/Scripts/jquery-ui-{version}.js",
"~/Scripts/jquery.mockjson.js",
"~/Scripts/jQuery.XDomainRequest.js",
"~/Scripts/knockout-{version}.js"
);
thirdParty.Transforms.Clear();
bundles.Add(thirdParty);
现在,如果您有多个 JavaScript 包,请一一执行此操作,直到找到罪魁祸首包。
我发现调试这些问题的唯一方法是将您的捆绑包分成两半以进一步分解:
var thirdParty1 = new Bundle("~/bundles/thirdParty1").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/bootstrap.js",
"~/Scripts/jquery-ui-{version}.js"
);
bundles.Add(thirdParty1);
var thirdParty2 = new ScriptBundle("~/bundles/thirdParty2").Include(
"~/Scripts/jquery.mockjson.js",
"~/Scripts/jQuery.XDomainRequest.js",
"~/Scripts/knockout-{version}.js"
);
bundles.Add(thirdParty2);
请注意,我们仅禁用了两个捆绑包之一的缩小 -thirdParty1
。请确保并更新您的@Scripts.Render
指向您的新捆绑包。当您构建并重新加载时,您要么继续收到错误,要么不会,然后就会知道哪一半包含麻烦的代码。但一定要双向测试,缩小thirdParty1
和不缩小thirdParty2
在我的例子中,反之亦然,以确保没有发生其他事情。您可能还希望保留 DevTools 或打开的任何浏览器调试器,并查看捆绑包的源代码以确保它们按预期运行。
继续从缩小的包中移动脚本(thirdParty1
就我而言)来自未缩小的捆绑包(thirdParty2
)如果您有很多脚本,可以一次一个或分块。请记住在中间进行重建,并小心不要更改脚本的包含顺序。
这至少应该让您找到有问题的文件 - 并且希望搜索“
希望有帮助。