在使用第三方JQuery插件的MVC3應用程序中使用SquishIt時,我遇到了很多錯誤。在我的開發機器上,如果我在Bundle命令中設置了ForceDebug方法,那麼一切正常,並且JS按正常方式處理。但是,如果我設置了ForceRelease方法(在開始生產之前進行測試),那麼當我啓動該站點時,FireFox將顯示「不是函數」錯誤。我曾嘗試在web.config中設置compilation debug="true"
,但沒有任何改進。MVC3中的SquishIt ForceRelease無法正確地減小JQuery插件
這是我的_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內容非常重要 - 在這裏腳本的另一個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
什麼有什麼想法我可能在這裏搞砸了?
你搖滾馬克!這表明我朝着正確的方向前進。對於其他人,我發現'jquery-numeric.js'有一些沒有終止的函數,''jquery-maskedinput-1.3''在'}(jQuery));'後沒有結尾分號。再次感謝! – bigmac 2012-03-27 19:39:20
我有完全相同的問題。未以分號結尾的第三方JavaScript文件。我會保存所有其他人一些谷歌搜索,這就是你如何添加一個null minifier:.WithMinifier(新的SquishIt.Framework.Minifiers.JavaScript.NullMinifier()) – Arbiter 2012-05-29 15:26:42