Нужна помощью зала!
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.03.26 21:53
Оценка:
Проблем с сайтом после деплоймента нового кода были связаны не с новым кодом, а с тем, что перестал работать старый код.

Я нашел временное решение — отключение оптимизации — объединения скриптов в бандлы.

Но это приводит к тому, что при открытии страниц приходится тянуть куда больший объем скриптов.

Вот файл загружающий бандл (с багом):
http://files.rsdn.org/73/rsdn/view-source_localhost_8888_forum_rsdn_9071160.1.html
вот файл самого бандла: http://files.rsdn.org/73/rsdn/messages.js

А вот файл с отладочного локального сайта без бандла: http://files.rsdn.org/73/rsdn/view-source_localhost_8888_forum_rsdn_9071160.1.html
Последний работает корректно. И сейчас сайт работает так же, по тому оценки работают.

Вот ошибки:
Mixed Content: The page at 'https://rsdn.org/forum/ai/9058825.1' was loaded over HTTPS, but requested an insecure element 'http://nemerle.org/Banners/?g=dark'. This request was automatically upgraded to HTTPS, For more information see https://blog.chromium.org/2019/10/no-more-mixed-messages-about-https.html
9058825.1:147  GET https://nemerle.org/Banners/?g=dark 499 (Request has been forbidden by antivirus)
VM801 site:1 JQMIGRATE: Migrate is installed, version 3.0.0
site?v=FTnHa3wLfNY8JJhOcuoMcAIFH6V3sh_e7ZwtcszzfW41:1 JQMIGRATE: Migrate is installed, version 3.0.0
messages?v=GJJzKRknR3U1v2Ti6dO2dMQ-IwOFuCBsETKrnQ8D6281:1 Uncaught SyntaxError: Identifier 'ii' has already been declared (at messages?v=GJJzKRknR3U1v2Ti6dO2dMQ-IwOFuCBsETKrnQ8D6281:1:281599)
9058825.1:52 Uncaught ReferenceError: ShowMessageFrame is not defined
    at 9058825.1:52:39




Баги с ii я попытался пофиксить, объявив переменные явно (какое-то дремучее наследие из нулевых). Но не помогло.

Есть кто-то опытный в вебнутых технологиях, проанализируйте причину падений.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Нужна помощью зала!
От: bnk СССР http://unmanagedvisio.com/
Дата: 28.03.26 08:32
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Есть кто-то опытный в вебнутых технологиях, проанализируйте причину падений.


На первый взгляд бандлер переводит var => let, собака может быть зарыта в этом.
Переводит он если у него целевая версия стоит слишком новая (> es2015), что может быть по умолчанию после установки.
Если поставить целевую версию es5 (старую) может починится.

Где конкретно это подкрутить сказать тяжело, скорее всего потребуется доступ к исходникам.
Отредактировано 28.03.2026 11:02 bnk . Предыдущая версия .
Re: Нужна помощью зала!
От: akasoft Россия  
Дата: 28.03.26 10:58
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Проблем с сайтом после деплоймента нового кода были связаны не с новым кодом, а с тем, что перестал работать старый код.

Во всём виноват предыдущий царь.

VD>Я нашел временное решение — отключение оптимизации — объединения скриптов в бандлы.

VD>Но это приводит к тому, что при открытии страниц приходится тянуть куда больший объем скриптов.
Что мелкие, что крупные — все будут кешироваться на стороне клиента. Проблема будет проявляться только при первой загрузке.

VD>Вот файл загружающий бандл (с багом):

VD>А вот файл с отладочного локального сайта без бандла:
Ссылка на один и тот же файл.

VD>
VD>Mixed Content: The page at 'https://rsdn.org/forum/ai/9058825.1' was loaded over HTTPS, but requested an insecure element 'http://nemerle.org/Banners/?g=dark'. This request was automatically upgraded to HTTPS, For more information see https://blog.chromium.org/2019/10/no-more-mixed-messages-about-https.html
VD>9058825.1:147  GET https://nemerle.org/Banners/?g=dark 499 (Request has been forbidden by antivirus)
VD>

Это смешивание https и http контента, грузить из https станички элементы http небезопасно, о чём и написано. Я так понимаю, на сайте немерле протух или не продлён SSL-сертификат, поэтому повышение http до https блокируется.

VD>
VD>VM801 site:1 JQMIGRATE: Migrate is installed, version 3.0.0
VD>site?v=FTnHa3wLfNY8JJhOcuoMcAIFH6V3sh_e7ZwtcszzfW41:1 JQMIGRATE: Migrate is installed, version 3.0.0
VD>

Это обновление jquery разовое или для чего оно? А если убрать?

VD>
VD>messages?v=GJJzKRknR3U1v2Ti6dO2dMQ-IwOFuCBsETKrnQ8D6281:1 Uncaught SyntaxError: Identifier 'ii' has already been declared (at messages?v=GJJzKRknR3U1v2Ti6dO2dMQ-IwOFuCBsETKrnQ8D6281:1:281599)
VD>9058825.1:52 Uncaught ReferenceError: ShowMessageFrame is not defined
VD>    at 9058825.1:52:39
VD>

Обычно так бывает, если что-то не прогрузилось. Или если навключать один и тот же скрипт несколько раз, не расчитанный на множественное включение. Точно при правках не пробралась копипаста блока подключений скриптов по нескольку раз?

Тут я решил попробовать загрузить эту
Автор: VladD2
Дата: 21.02 22:00
страничку в FF под инструментами веб-разработки.
Сразу бросаются в глаза 403 Forbidden на казалось бы нормальные скрипты Message.js и др. Странное поведение. Ниже FF видимо повторяет запросы, и некоторые элементы прогружаются, а некоторые всё так же нет. Тот же Message.js загрузился со второго запроса, а вот Message.Fav.js нет.

Картинки




Кто раздаёт этот forbidden? А если перестать раздавать?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>> SQL DE 2016
Re: Нужна помощью зала!
От: F3V  
Дата: 28.03.26 13:25
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Вот ошибки:

VD>
Mixed Content: The page at 'https://rsdn.org/forum/ai/9058825.1' was loaded over HTTPS, but requested an insecure element 'http://nemerle.org/Banners/?g=dark'. This request was automatically upgraded to HTTPS, For more information see https://blog.chromium.org/2019/10/no-more-mixed-messages-about-https.html
9058825.1:147  GET https://nemerle.org/Banners/?g=dark 499 (Request has been forbidden by antivirus)


Я бы обратил внимания на:

1. Страничка на https: 'https://rsdn.org/forum/ai/9058825.1
Автор: VladD2
Дата: 21.02 22:00
',
а отдаётся банер немерле небезопасно (там проблемы с https сертификатом)
по http: 'http://nemerle.org/Banners/?g=dark',
поэтому, судя по всему, твой Касперский его отсекает по 499.

VD>
VM801 site:1 JQMIGRATE: Migrate is installed, version 3.0.0
site?v=FTnHa3wLfNY8JJhOcuoMcAIFH6V3sh_e7ZwtcszzfW41:1 JQMIGRATE: Migrate is installed, version 3.0.0


2. Лог миграции не знаю, что за зверь, но странно его видеть в продакшн режиме.

VD>вот файл самого бандла: http://files.rsdn.org/73/rsdn/messages.js

VD>
messages?v=GJJzKRknR3U1v2Ti6dO2dMQ-IwOFuCBsETKrnQ8D6281:1 Uncaught SyntaxError: Identifier 'ii' has already been declared (at messages?v=GJJzKRknR3U1v2Ti6dO2dMQ-IwOFuCBsETKrnQ8D6281:1:281599)


3. Можно заменить (переименовать):

,ii=r.$tooltip.innerWidth()+1,


на

,tii=r.$tooltip.innerWidth()+1,

Это значение переменной всё-равно не используется,
т.к. в контексте далее объявляется функция ii(), которая и используется.

VD>
9058825.1:52 Uncaught ReferenceError: ShowMessageFrame is not defined
   at 9058825.1:52:39


4. Поскольку 'http://files.rsdn.org/73/rsdn/messages.js' обломался с синтаксической ошибкой, то его функция ShowMessageFrame не определена.
Re[2]: Нужна помощью зала!
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.03.26 19:32
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Переводит он если у него целевая версия стоит слишком новая (> es2015), что может быть по умолчанию после установки.

bnk>Если поставить целевую версию es5 (старую) может починится.

Как это изменить?

У меня вообще ощущение, что просто появилась новая версия дежейквери, а минификатор из доситорического ASP.NET не способен её правильно склеить.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Нужна помощью зала!
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.03.26 19:37
Оценка:
Здравствуйте, F3V, Вы писали:

F3V>3. Можно заменить (переименовать):


F3V>
F3V>,ii=r.$tooltip.innerWidth()+1,
F3V>


F3V>на


F3V>
F3V>,tii=r.$tooltip.innerWidth()+1,
F3V>


Что где заменить? Даже мне ничего не сведущему в вебнутых технологиях понятно, что это эти имена — результат работы минификатора. А код из каких-то библиотек. Скорее всего джейквери.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Нужна помощью зала!
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.03.26 21:11
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Баги с ii я попытался пофиксить, объявив переменные явно (какое-то дремучее наследие из нулевых). Но не помогло.


Воспроизвел на дебажном сервере.

Я вижу два участка похожих на объявление:
1. ...var kt,dt,gt,ni,ti,ii,ri,ui,fi,v,ut=i.Color.names={aqua:"#00ffff",...
2. ...function ii(){var i=n(t).scrollLeft();u-i<0&&(o=u-i,u=i);u+e-i>b&&(o=u-(b+i-e),u=b+i-e)}function ri(r,u){i.offset.top-n(t).scrollTop()-c-s-12<0&&u.indexOf("top")...

Т.е. конфликт между именем переменной и именем фунцции.

Сделал поиск по файлам скриптов и мне кажется, я нашел функцию которая при минификации получила имя ii. Это функция dontGoOffScreenX из Scripts\jquery.tooltipster.js:
// a function to detect if the tooltip is going off the screen horizontally. If so, reposition the crap out of it!
function dontGoOffScreenX() {

    var windowLeft = $(window).scrollLeft();
    
    // if the tooltip goes off the left side of the screen, line it up with the left side of the window
    if((myLeft - windowLeft) < 0) {
        arrowReposition = myLeft - windowLeft;
        myLeft = windowLeft;
    }
    
    // if the tooltip goes off the right of the screen, line it up with the right side of the window
    if (((myLeft + tooltipWidth) - windowLeft) > windowWidth) {
        arrowReposition = myLeft - ((windowWidth + windowLeft) - tooltipWidth);
        myLeft = (windowWidth + windowLeft) - tooltipWidth;
    }
}


вот ее минифицированный вариант:
function ii(){var i=n(t).scrollLeft();u-i<0&&(o=u-i,u=i);u+e-i>b&&(o=u-(b+i-e),u=b+i-e)}


Итого проблема носит системный характер. Причина в кривой минификации. Два не связанных объекта (переменная и функция) получают одно имя и оба оъявлены глобально.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Нужна помощью зала!
От: bnk СССР http://unmanagedvisio.com/
Дата: 29.03.26 02:38
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, bnk, Вы писали:


bnk>>Переводит он если у него целевая версия стоит слишком новая (> es2015), что может быть по умолчанию после установки.

bnk>>Если поставить целевую версию es5 (старую) может починится.

VD>Как это изменить?


VD>У меня вообще ощущение, что просто появилась новая версия дежейквери, а минификатор из доситорического ASP.NET не способен её правильно склеить.


Ну как я, не зная как оно, собственно, собирается, могу сказать...IMHO надо по месту смотреть
Какой минификатор используется? BundlerMinifier плагин для студии?

Я могу посмотреть без проблем, но тогда мне нужен доступ к исходникам и скрипту сборки, без этого только гадать к сожалению.

По виду конфликтующие плагины для jQuery — это Tooltipster и jQueryUI.
Оба старые как смерть, а бандлер-минифаер пытается их зааковать вместе с target="что-то-не-такое-старое"

Я думаю можно попробовать обновить версию tooltipster (кстати зачем он вообще?),
или поставить в конфигурации бандлера-минифаера "es5" чтобы собирал как раньше.
Где это конкретно, зависит от того какой бандлер-минифаер используется.
Отредактировано 29.03.2026 4:49 bnk . Предыдущая версия . Еще …
Отредактировано 29.03.2026 4:46 bnk . Предыдущая версия .
Отредактировано 29.03.2026 4:39 bnk . Предыдущая версия .
Отредактировано 29.03.2026 4:39 bnk . Предыдущая версия .
Отредактировано 29.03.2026 4:34 bnk . Предыдущая версия .
Отредактировано 29.03.2026 4:33 bnk . Предыдущая версия .
Отредактировано 29.03.2026 4:28 bnk . Предыдущая версия .
Re[2]: Нужна помощью зала!
От: akasoft Россия  
Дата: 29.03.26 09:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я вижу два участка похожих на объявление:

VD>
1. ...var kt,dt,gt,ni,ti,ii,ri,ui,fi,v,ut=i.Color.names={aqua:"#00ffff",...
2. ...function ii(){var i=n(t).scrollLeft();u-i<0&&(o=u-i,u=i);u+e-i>b&&(o=u-(b+i-e),u=b+i-e)}function ri(r,u){i.offset.top-n(t).scrollTop()-c-s-12<0&&u.indexOf("top")...


VD>Т.е. конфликт между именем переменной и именем фунцции.

В приведённом выше фрагменте следом идёт функция ri, а в блоке переменных ранее после ii объявлена такая же переменная ri. Возможно, дело в чём-то другом, а для жабаскрипта динамическое переопределение имён является допустимой практикой, что и эксплуатируется минификатором.

Чего бы просто не запустить код без минификатора, чтобы убедиться, что он точно рабочий?

VD>Итого проблема носит системный характер. Причина в кривой минификации. Два не связанных объекта (переменная и функция) получают одно имя и оба оъявлены глобально.

Либо, как обычно, в наличии знаний и опыта.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>> SQL DE 2016
Re[3]: Нужна помощью зала!
От: F3V  
Дата: 29.03.26 15:26
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Что где заменить? Даже мне ничего не сведущему в вебнутых технологиях понятно, что это эти имена — результат работы минификатора. А код из каких-то библиотек. Скорее всего джейквери.


Имена конечно же. Я предложил изменить один символ первой переменной, т.к. это самый простой был вариант.
Был резервыный вариант изменить функцию,
но теперь, похоже, достаточно изменить синтаксическую конструкцию на эквивалентную,
т.к. лицензия MIT это позволяет и минификатор будет считать ёё как обычно:

Строка 755:
var dontGoOffScreenX = function () {


Строка 777:
var dontGoOffScreenY = function (switchTo, switchFrom) {


Хотфикс такой можно было бы сделать, а потом смотреть на "системное решение".

Впрочем, далее "у меня лапки"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.