Запретить Webpack удалять функции jQuery?

#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) {};