使用mvc4类(class)的bundle特性
Uncaught SyntaxError: Unexpected token <
正在加载。使用 debug="true"
一切正常。
我该如何解决这个错误,或者我是否可以只为脚本禁用捆绑功能?
已解决
重命名包名称以与任何目录不匹配
最佳答案
在回答导致此错误的原因之前,您必须先找出错误发生的位置。捆绑时代码语法的唯一区别是它被缩小了。一个非常简单的方法是使用 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 或您打开的任何浏览器调试器,并查看 bundle 的源代码以确保它们按预期运行。
继续将脚本从缩小包(thirdParty1
在我的例子中)从未缩小包(thirdParty2
)移动一次一个或 block ,如果你有很多脚本。请记住在中间重建,并注意不要更改脚本的包含顺序。
这至少应该让您找到有问题的文件 - 希望搜索“<”会得到您的答案。
希望对您有所帮助。
关于javascript - 捆绑 JavaScript 类(class) Uncaught SyntaxError : Unexpected token <,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17659784/