Глоток минимизировал JS бросает ошибку
У нас есть много отдельных файлов JavaScript, и, конечно, они уменьшены до различных других в Production. В настоящее время мы используем Microsoft Ajax Minifier из командной строки для этой задачи, но намерение состоит в том, чтобы перейти на gulpjs.
Сам процесс минимизации выглядит нормально, все выходные файлы сгенерированы, ошибки не выводятся на выход и т. Д.
Но у меня странная проблема, ~4-5 из 16 уменьшенных файлов, сгенерированных gulpjs
бросать различные ошибки, такие как:
Не удается прочитать свойство '...' из неопределенного
или же
Uncaught TypeError: (промежуточное значение)(промежуточное значение)(...) не является функцией
Ajax minifier называется следующим образом:
AjaxMin.exe -js -xml .\minify.xml -clobber -evals:safeall
Образец из minify.xml
:
<?xml version="1.0" encoding="utf-8"?>
<root>
<output path="..\js\min\main.min.js">
<input path="..\js\filename1.js"/>
<input path="..\js\filename2.js"/>
<input path="..\js\filename3.js"/>
...
</output>
<output path="..\js\min\report.min.js">
<input path="..\js\filename4.js"/>
<input path="..\js\filename5.js"/>
<input path="..\js\filename6.js"/>
...
</output>
...
</root>
Образец из gulpfile.js
gulp.task("[js]minify-all", function () {
var mainFiles = [
"./js/filename1.js",
"./js/filename2.js",
"./js/filename3.js",
];
var reportFiles = [
"./js/filename4.js",
"./js/filename5.js",
"./js/filename6.js",
];
...
generateMinifiedFile(mainFiles, "./js/min/", "main");
generateMinifiedFile(reportFiles, "./js/min/", "report");
...
}
var generateMinifiedFile = function(inputFiles, outputPath, outputFileName) {
gulp.src(inputFiles)
.pipe(concat(outputFileName + ".js"))
.pipe(minify({
ext: {
min: ".min.js"
},
noSource: true
}))
.pipe(gulp.dest(outputPath));
};
В случае, если это имеет значение, вот package.json
{
"name": "package",
"version": "1.0.0",
"private": true,
"devDependencies": {
"gulp": "3.9.1",
"gulp-bower": "0.0.13",
"gulp-concat": "^2.6.0",
"gulp-config": "0.3.0",
"gulp-less": "3.0.5",
"gulp-minify": "0.0.12",
"gulp-minify-css": "1.2.4",
"gulp-plumber": "1.1.0",
"gulp-watch": "4.3.5"
}
}
Подвести итог:
- Используя неминифицированные js-файлы, сайт работает нормально.
- Использование минимизированных js-файлов, созданных
AjaxMin.exe
Сайт работает нормально. - Использование минимизированных js-файлов, созданных
gulpjs
, сайт ломается.
У кого-нибудь есть предложение, что я скучаю?
ОБНОВИТЬ
Пример создания контроллера:
var settingsModule = angular.module("settingsModule", ["rootModule"]);
settingsModule.controller('settingsCasesController', ["$rootScope", "$scope", "$http", "DataService", function ($rootScope, $scope, $http, dataService) {
...
}
1 ответ
Примечание. Это должен быть комментарий, но это ответ, поскольку он немного длинный, а ответ легче написать и прочитать...
Для начала попробую установить false
и то и другое gulp-minify
опции mangle
а также compress
,
Если код работает нормально, попробуйте установить false
только один вариант, чтобы увидеть, какой из них несет ответственность за сбой.
Если код ломается (это было бы довольно странно, так как я полагаю, что главная задача минификатора - это сжатие и искажение...), я бы попытался вручную сравнить выходные данные одного gulp-minify
Отредактируйте файл в исходном коде, чтобы увидеть, что это за изменения...