Не работают функции JS на проде, на IISExpress работали

Проект ASP NET CORE MVC 3

В проекте в файлах представлениях я прописывал ссылки на файлы с JS функциями следующем образом:

    @section Scripts {

    <script type="text/javascript" src="~/js/JS_Create_Edit_Friend.js"></script>
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

В самом файле прописывал:

// Обновление списка улиц после выбора города
$(function () {
    $("#CityId").change(function () {
        var formData = { 'CityId': Number.parseInt($('#CityId').val()), 'Name': $('#CityId>option:selected').text() };
        $.ajax({
           url: "http://localhost:18246/api/API/searchStreets",
            
            headers:
            {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
                'RequestVerificationToken': $('#RequestVerificationToken').val()
            },
            type: 'POST',
            dataType: "json",
            data: JSON.stringify(formData),
            success: function (data) {

                dataFilling(data, 'idStreet', 'name', '#StreetId', '<option/>');

                // Генерация события для элемента Select
                let elemSelectHouse = document.querySelector('#StreetId')
                elemSelectHouse.selectedIndex = 0;
                const event = new Event("change");
                elemSelectHouse.dispatchEvent(event);
            },
            error: function (result, status, er) {
                alert("error: " + result + " status: " + status + " er:" + er);
            }
        });
    });    
});

На локальном IISExpress при запуске все работало нормально, но при публикации на прод все сломалось, выдает ошибку, что :

Uncaught TypeError: $(...).DataTable is not a function
    at HTMLDocument.<anonymous> (JS_Index_Friends.js:19)
    at e (jquery.min.js:2)
    at t (jquery.min.js:2)

А перед этим предупреждение, что функции не определены:

jquery.min.js:2 jQuery.Deferred exception: $(...).DataTable is not a function TypeError: $(...).DataTable is not a function
    at HTMLDocument.<anonymous> (http://localhost/CollectVoters/js/JS_Index_Friends.js:19:23)
    at e (http://localhost/CollectVoters/lib/jquery/dist/jquery.min.js:2:30005)
    at t (http://localhost/CollectVoters/lib/jquery/dist/jquery.min.js:2:30307) undefined

Поменял в функции абсолютный адрес на относительный:

url: "/api/API/searchStreets",

На тесте все работает на проде выдает ошибку, что не найден:

jquery.min.js:2 POST http://localhost/api/API/searchStreets 404 (Not Found)

Ответы (1 шт):

Автор решения: aepot
  • Это же прод, учитесь писать относительные пути, на проде у вас не localhost. url: "/api/API/searchStreets", то же самое в местах, где вы JS библиотеки подключаете.

  • <environment include="Development"> - а для Production окружения? У вас библиотеки подключены здесь только у Development сборке. В настройках смотрите, где у вас имя хоста задается, там нужно его на продовский поправить, но не в девелопмент конфигурации, а в продовской.

→ Ссылка