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 ответ
Решение
Я думаю, что это причины проблемы
- Модуль исходного кода ajaxmin кажется зарезервированным словом
- Если область видимости /else не компилируется должным образом в вывод.
Это, кажется, вызывает проблему
var blockType = AjaxMin.BlockTypeModule.FormatInvariant
(moduleScope.ScopeName.IfNullOrWhiteSpace(AjaxMin.ModuleNameImplicit));
Обходной путь (это то, что я сделал в своем проекте):
- Вы можете заменить эту строку
module{}.
сmodule.
- используйте тернарный оператор вместо if/else (скорее всего это пропустит замену всего этого чанка)
- использовать версию этого файла minify (это пропустит minify)