3

在带有 3rd 方 JQuery 插件的 MVC3 应用程序中使用SquishIt时出现大量错误。在我的开发机器上,如果我在 Bundle 命令上设置 ForceDebug 方法,一切正常,并且 JS 被正常处理。但是,如果我设置ForceRelease方法(在推出生产之前进行测试),当我启动站点时,FireFox 会显示“不是函数”错误。我尝试compilation debug="true"在 web.config 中进行设置,但没有任何改进。

这是我的 _layout.cshtml 文件中的 JS 调用。所有捆绑都适用于标准 JQuery 插件:

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-1.8.18.custom.min.js")"></script>
@(Bundle.JavaScript()
    .Add("~/Scripts/modernizr-2.5.3.js")
    .Add("~/Scripts/jquery.fileinput.js")
    .Add("~/Scripts/jquery.numeric.js")
    .Add("~/Scripts/jquery.maskedinput-1.3.min.js")
    .Add("~/Scripts/jquery.maxlength_countdown.js")
    .Add("~/Scripts/jquery.qtip.min.js")
    .Add("~/Scripts/jquery.pnotify-1.1.0.min.js")
    .Add("~/Scripts/fileuploader.js")
    .Add("~/Scripts/jquery.dropdownchecklist-1.4.js")
    .Add("~/Scripts/jquery.blockUI.js")
    .Add("~/Scripts/jquery.textarearesizer.min.js")
    .ForceRelease()
    .MvcRender("~/CompiledContent/combined_#.js")
  )

以下是 FireFox 显示的错误示例。这会根据我在捆绑包中包含的内容进行更改:

function (n) {var i = (n.browser.msie ? "paste" : "input") + ".mask", t = window.orientation != undefined;n.mask = {definitions: {9: "[0-9]", a: "[A-Za-z]", '*': "[A-Za-z0-9]"}, dataName: "rawMaskFn"}, n.fn.extend({caret: function (n, t) {if (this.length != 0) {if (typeof n == "number") {return t = typeof t == "number" ? t : n, this.each(function () ... YADDA YADDA YADDA - 这里还有 50 行脚本 ... function () {setTimeout(i, 0);})();}).bind("blur.mask", function () {v(), c.val() != p && c.change();}).bind("keydown.mask", nt).bind("keypress.mask", d).bind(i, function () {setTimeout(function () {c.caret(v(true));}, 0);}), v();});}});}(jQuery) is not a function

$(".dropdown-checklist").dropdownchecklist is not a function

关于我可能在这里搞砸的任何想法?

4

1 回答 1

8

我们之前遇到过这样的事情......发现其中一个文件在 javascript 函数的末尾没有分号。这造成了各种破坏。当它本身是一个文件时,该函数可以正常工作,但是一旦组合起来,分号就会产生影响。

您还可以将 Minifier 设置为 null minifier 并查看它创建的输出。这可能有助于进行更多故障排除。

于 2012-03-27T15:43:14.397 回答