Глоток минимизировал 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Отредактируйте файл в исходном коде, чтобы увидеть, что это за изменения...

Другие вопросы по тегам