在使用第三方JQuery插件的MVC3应用程序中使用 SquishIt 时,我遇到了大量错误。在我的开发机器上,如果我在Bundle命令上设置ForceDebug方法,一切正常,JS正常处理。但是,如果我设置 ForceRelease 方法(在推出到生产之前进行测试),当我启动网站时,FireFox会显示“不是函数”错误。我尝试在web.config中设置compilation debug="true"
但没有任何改进。
以下是我的_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
关于我可能搞砸了什么的任何想法?
答案 0 :(得分:8)
之前遇到过这样的事情......发现其中一个文件在javascript函数结束时没有分号。这造成了各种各样的破坏。当函数本身是一个文件时,该函数可以正常工作,但一旦合并,分号就会产生影响。
您还可以将Minifier设置为null minifier并查看它创建的输出。这可能有助于进行更多故障排除。