2016-04-24 2 views
0

В настоящее время я реорганизую часть веб-сайта javascript, и теперь я объединил некоторые скрипты вместе с помощью Browserify. Получившийся скрипт поставляется вместе с другими ресурсами с помощью SquishIt. В режиме отладки, когда SquishIt не связывает все скрипты вместе, все работает нормально, но при запуске в Production и SquishIt собирает все вместе, я получаю ошибки из части Browserify моего пакета. Ошибка возникает, если r не имеет свойства length (см. Строку 18). Эта часть кода создается при помощи Browserify при связывании скриптов.Получение ошибок при наборе браузера с SquishIt

(function e(t, n, r) { function s(o, u) { if (!n[o]) { if (!t[o]) { var a = typeof require == "function" && require; if (!u && a) return a(o, !0); if (i) return i(o, !0); var f = new Error("Cannot find module '" + o + "'"); throw f.code = "MODULE_NOT_FOUND", f } var l = n[o] = { exports: {} }; t[o][0].call(l.exports, function(e) { var n = t[o][1][e]; return s(n ? n : e) }, l, l.exports, e, t, n, r) } return n[o].exports } var i = typeof require == "function" && require; for (var o = 0; o < r.length; o++) s(r[o]); return s })({

Я действительно не могу думать ни о чем, что с помощью SquishIt в расслоении все сценарии будут нарушать логику browserified скриптов. Что может быть причиной этого? This gist показывает весь исходный код, если это имеет значение.

Я ничего не изменил на стороне ASP.NET (в комплектации), и соответствующая часть моего'Head.ascx' выглядит следующим образом:

Bundle.JavaScript() 
.Add(Assets.JavaScript.GetUrl("main.js").ToString()) 
.Add(Assets.JavaScript.GetUrl("Plugins/raphael-min.js").ToString()) 
.Add(Assets.JavaScript.GetUrl("Plugins/vector_map.js").ToString()) 
// more ... 
.Render("~/Content/"+Assets.VersionString+"/Scripts/Combined/combined.js") 

ответ

1

Посмотрите на это прокомментирует может помочь https://github.com/jetheredge/SquishIt/issues/320#issuecomment-139921409

Есть ли причина, по которой вам нужно использовать два разных комплектационных решения?

+0

Спасибо! Я узнал, проверив миниатюрный вывод, что SquishIt (или какой-то минигарнир, включенный в него) уничтожил закрытие, созданное браузером; «разворачивание» их и получение зависимостей не в порядке. Это заставило нас обратиться к встроенному компоновщику ASP.NET, который работал нормально, но минимизация производила ошибки, которые показали, что мы включили некоторые непереводимые функции ES6 лямбда/стрелки, которые могут быть причиной того, что SquishIt сломался. – oligofren

+0

Что касается того, почему мы используем два разных пакетаных решения, я недавно взял на себя этот старый проект, пытаясь его очистить и внедрить современные методы FE. Использование Browserify Я могу избавиться от глобальных переменных, перемещая один скрипт за один раз до CommonJS, не касаясь всего остального. – oligofren

+1

В этом случае я бы попытался переключиться на включенный мини-юнивер YUI. Если это не сработает, есть бета-пакет для SquishIt v1.0, доступный в Nuget, который использует более поздние версии обоих мини-инструментов. Надвигаются некоторые существенные изменения, но я думаю, что это, вероятно, в приличной форме. https://www.nuget.org/packages/SquishIt/1.0.0-beta2 – AlexCuse

Смежные вопросы