SquishIt ForceRelease в MVC3 неправильно минимизирует плагины JQuery - PullRequest
3 голосов
/ 27 марта 2012

Я получаю массу ошибок при использовании SquishIt в моем приложении MVC3 с плагинами JQuery сторонних производителей.На моей машине разработки, если я установил метод ForceDebug в команде Bundle, все работает нормально, и JS обрабатывается как обычно.Однако, если я устанавливаю метод ForceRelease (для проверки перед развертыванием в производство), при запуске сайта FireFox отображает ошибки «не является функцией».Я попытался установить compilation debug="true" в файле web.config без каких-либо улучшений.

Вот вызовы JS в моем файле _layout.cshtml.Все пакеты для стандартных плагинов 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

Есть мысли о том, что я мог облажаться здесь?

1 Ответ

8 голосов
/ 27 марта 2012

Мы столкнулись с чем-то подобным, прежде чем ... обнаружили, что у одного из файлов не было точки с запятой в конце функции javascript.Это вызвало все виды хаоса.Функция отлично работает, когда это сам файл, но после объединения точка с запятой имеет значение.

Вы также можете установить Minifier равным null minifier и просмотреть вывод, который он создает.Это может помочь в устранении неполадок.

...