#javascript #webpack
#javascript #webpack
Вопрос:
Когда мой JS-файл поставляется в комплекте с (WebPack версии 5), он удаляет мои функции. Моя конфигурация выглядит следующим образом:
var path = require('path');
module.exports = {
entry: {
main: './Scripts/main.js'
},
output: {
publicPath: "/js/",
path: path.join(__dirname, '/wwwroot/js/'),
filename: 'main.build.js'
}
};
и я хочу сжать и объединить этот файл:
function GetModal(e) {
/*Modal code...*/
}
setTimeout(function () {
if ($('div.modalRequest').length > 0) {
$('div.modalRequest').empty();
$.ajax({
type: "GET",
url: '/RequestCall/TextEditorRequestContact',
contentType: "application/json;charset=utf-8",
content: "json",
success: function (data) {
$('div.modalRequest').append(data);
}
});
}
}, 100);
$(function () {
setInterval(function () { $("#btnsliders").click().fadeIn() }, 5000);
})
и выходной файл выглядит следующим образом
setTimeout((function() {
$("div.modalRequest").length > 0 amp;amp; ($("div.modalRequest").empty(), $.ajax({
type: "GET",
url: "/RequestCall/TextEditorRequestContact",
contentType: "application/json;charset=utf-8",
content: "json",
success: function(t) {
$("div.modalRequest").append(t)
}
}))
}), 100), $((function() {
setInterval((function() {
$("#btnsliders").click().fadeIn()
}), 5e3)
}));
В этом примере GetModal
функция удалена
Кто-нибудь знает, почему WebPack удаляет функцию?
Есть ли способ предотвратить это?
Комментарии:
1. Где вы используете
getModal
? Мне кажется, что Webpack удаляет мертвый код, как и должно быть.2. Я использую `getModal` в вызове ajax, есть ли какой-нибудь способ предотвратить это?
3. Я не понимаю, почему вы пытаетесь обернуть
setInterval
в обработчикdocument ready
событий с помощью этого:}), 100), $((function() {
Ответ №1:
В webpack.config.js , скажите Webpack не сворачивать ваш код
optimization: {
minimize: false
}
Это предотвратит удаление Webpack вашей функции GetModal.
Комментарии:
1. спасибо, это сработало. но почему при минимизации он удаляет функцию и не удаляет сброс?
2. Во время минимизации GetModal удаляется, потому что он нигде не используется.
3. У меня новая проблема.
GetModal
не удаляет, но я не могу вызвать его сonclick="GetModal(this)"
помощью . я ссылаюсь на него на своей HTML-странице, но он показывает эту ошибкуUncaught ReferenceError: GetModal is not defined at HTMLButtonElement.onclick ((index):39)
, что мне делать?4. Вы можете превратить свою функцию GetModal в глобальную функцию, назначив ее объекту window . Это будет работать. Обычно вы связываете всю свою логику с webpack, глобальные переменные не нужны.
window.GetModal = function GetModal(e) {};