Ajaxmin MinifyJavascript добавление {} перед объектом

Я столкнулся с проблемой при минимизации файла JavaScript с помощью метода MinifyJavaScript от AjaxMin.

Unminified Code

if (typeof define === 'function' && define.amd) {
        define(['moment'], function (moment) {
            root.moment = factory(moment)
            return root.moment
        })
    } else if (typeof exports === 'object') {
        module.exports = factory(require('moment'))
    } else {
        root.moment = factory(root.moment)
    }

Минимизированный код

if(typeof define=="function"&&define.amd)define(["moment"],function(i){return n.moment=t(i),n.moment});else if(typeof exports=="object"){module{}.exports=t(require("moment"))}else n.moment=t(n.moment)}

Здесь в минимизированном коде "{}" добавляется после объекта модуля, например: module{}. Exports, но это должен быть module.exports

Перед минификацией файла есть еще несколько файлов: 1. jquery-3.3.1.min.js 2. moment.min.js

Все файлы объединены в один файл и после этого минификация завершена.

1 ответ

Решение

Я думаю, что это причины проблемы

  1. Модуль исходного кода ajaxmin кажется зарезервированным словом
  2. Если область видимости /else не компилируется должным образом в вывод.

Это, кажется, вызывает проблему

var blockType = AjaxMin.BlockTypeModule.FormatInvariant
(moduleScope.ScopeName.IfNullOrWhiteSpace(AjaxMin.ModuleNameImplicit));

Обходной путь (это то, что я сделал в своем проекте):

  • Вы можете заменить эту строку module{}. с module.
  • используйте тернарный оператор вместо if/else (скорее всего это пропустит замену всего этого чанка)
  • использовать версию этого файла minify (это пропустит minify)
Другие вопросы по тегам