【问题标题】:MVC4 bundle js minification error, is this a bug?MVC4 bundle js 缩小错误,这是一个错误吗?
【发布时间】:2013-06-20 23:30:59
【问题描述】:

我尝试在包含以下函数的 javascript 文件上运行 MVC4 包:

$.fn.ApplyBehavior = function (behaviors) {
    var fns = behaviors.split(",");
    var $t = $(this);
    $.each(fns, function (i, o) {
        try {
            var callfn = eval(o);
            if (typeof callfn == 'function') {
                callfn.call($t);
            }
        } catch (e) {
            // faill silently
            console.log(o);
            console.log(e.stack);

        }
    });
    return this;
}

bundle 生成的结果如下所示:

$.fn.ApplyBehavior = function(n) {
    var t = n.split(","), i = $(this);
    return $.each(t, function(i, o) {
        try {
            var callfn = eval(o);
            typeof callfn == "function" && callfn.call(i)
        } catch (e) {
            console.log(o), console.log(e.stack)
        }
    }), this
},

问题出现在在输出结果中使用“i”,我已经在“each”循环中使用了“i”,所以显然冲突是在使用“i”调用函数时" 作为上下文

我正在使用最新的 NuGet 优化包(1.1.0-Beta1),以及常用的 Bundle 代码:

bundle = new ScriptBundle("~/scripts/uijs").Include("~/js/ui.web.js");
bundles.Add(bundle);

我做错了吗?为什么不预先检测“i”的使用?如果这是一个错误,我该如何报告?

【问题讨论】:

    标签: asp.net-mvc-4 bundle nuget-package asp.net-optimization


    【解决方案1】:

    这可能是因为您在代码中使用了 cmets(// 静默失败)。有时,当您这样做时,捆绑包会产生错误。

    【讨论】:

    • cmets 似乎总是有问题...我在 ASP.NET 将 2 个 .js 文件放在一起时遇到错误。 //# sourceMappingURL=underscore-min.map;/* 行给出了错误,因为注释块启动器 /* 被注释掉了。
    猜你喜欢
    • 1970-01-01
    • 2012-09-18
    • 2012-03-25
    • 2010-12-22
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多