Javascript-форум (https://javascript.ru/forum/)
-   Мобильный JavaScript (https://javascript.ru/forum/mobile/)
-   -   js module на мобильном (https://javascript.ru/forum/mobile/83395-js-module-na-mobilnom.html)

voraa 27.11.2021 12:21

js module на мобильном
 
Опять столкнулся с какой то хренью на мобильниках (Андроид, Crome - последняя версия)
Сейчас переделываю один проект, там требуется менять как можно меньше в html, только почистить (от jquery и по возможности от др. библиотек) и дополнить скрипты.
Стал использовать модули ES6
Было у них
<script src="./kld-js.js"></script>

Переделал на модули, стало
<script type="module" src="./kld-js.js"></script>

Все прекрасно работает на десктопе, в режиме эмуляции мобильника в средствах разработчика... Но не на настоящем мобильнике.
Отлаживаться непосредственно на мобильнике та еще песня, но вставкой в код алертов пришел к выводу, что скрипт не грузится вообще.
Стал действовать методами научного и не научного тыков.
Переименовал файл
<script type="module" src="./kld_js.js"></script>

Все прекрасно работает и на мобильнике.
Переименовываю назад - опять не работает.
Стал думать, может чего у меня в настройках сервера не так (хотя с чего бы - ведь на десктопе то все грузится), обнаружил, что в логах вообще нет обращений к ./kld-js.js, когда запрос идет с мобильника, но есть, когда запрос идет с десктопа.
Опять стал экспериментировать - переименовал так
<script type="module" src="./kld-js.mjs"></script>

Стало работать и на мобильнике.

Интересно то, что
<script type="module" src="./alive-data.js"></script>

грузится нормально - так, что символ "-" тут ни при чем.

Чего то я не понимаю, что происходит.

Aetae 27.11.2021 12:24

nype

voraa 27.11.2021 12:35

Цитата:

Сообщение от Aetae
nype

Ну это я когда пост печатал первый раз ошибся, а потом копипастил с ошибкой.
В коде то все как положено.

voraa 28.11.2021 10:34

Продолжил экперименты
Заменил
<script type="module" src="./kld-js.js"></script>

На
<script type="module">
	try {
        	await import('./kld-js.js')
	} catch (err) {
		alert (err)
	}
</script>


На десктопе все прекрасно, на мобиле получаю алерт

Цитата:

TypeError: Failed to fetch dynamically imported module: http://?????/kld-js.js
И в логах сервера при запросе с мобилы его просто нет. Ни ошибки, ни кода какого - ничего.

Ничего не понимаю :( :(

Aetae 28.11.2021 10:42

Мне лень проверять, но случаем на мобиле у тебя никакого болкировщика рекламы не стоит?

voraa 28.11.2021 10:56

А хрен его знает? Я вроде ничего не ставил.
Рекламы до фига идет
А как там посмотреть?

Ради интереса проверил на Файрфоксе на мобиле.
Все работает

Aetae 28.11.2021 10:59

voraa, а где не работает? В chrome или safari? Это две большие разницы.

voraa 28.11.2021 11:03

В chrome на android

Rise 28.11.2021 11:38

Цитата:

Сообщение от voraa
"./kld-js.js"

Да убери ты ./ из адреса.

voraa 28.11.2021 12:03

Цитата:

Сообщение от Rise
Да убери ты ./ из адреса.

Не...
Так даже десктоп дает ошибку
TypeError: Failed to resolve module specifier 'kld-js.js'

voraa 28.11.2021 12:19

Там вообще похоже проблемы не в модулях и не в js.
В чем не пойму. Кто то почему то где то блокирует обращение к этому файлу. Именно к этому. Стоит его хоть как то переименовать (kld1-js.js, akld-js.js ) - все начинает работать
Блокировка довольно странно проявляется.
Сервер, на котором я все это роблю - мой домашний комп. Есть вай-фай роутер с внешним статическим ip, полученным от провайдера. комп подключен к роутеру проводами, все как полагается сделаны пробросы портов, короче сервер прекрасно виден во внешнем мире. И мое начальство и заказчики, когда надо заходят, если я хочу им что то показать...
С мобилы соединяюсь с сервером либо по вифи, либо по 4Г, все прекрасно работает.
В данный момент захожу с вифи.
Попытался просто в chrome на мобиле набрать в адресной строке
http://<ip>/.../kld-js.js

И получил сообщение (ОТ МЕГАФОНА (мой оператор 4Г)
http://m.megafonpro.ru/http-errors/404 (пошла переадресация на этот ip)
Цитата:

404
К сожалению, мы не нашли страницу.
Если ввести другой файл, например, alive-data.js,
то спокойно получаю его на эране мобилы.

Короче, какой то маразм.

voraa 28.11.2021 12:44

Попробовал с ноута все это проделать.

При наборе в адресной строке текст показывается,
но при иморте выдается ошибка

TypeError: Failed to fetch dynamically imported module: http://?????/kld-js.js

Aetae 28.11.2021 17:45

voraa, http - мобильные операторы(и не только) подменяют js на обёртку со своей рекламой. У нас разок при показе демо заказчику порнобанер на огромном экране вылез.=)

Видать что-то с подменой у них пошло не так. Напиши в поддержку мегафона, пусть разбираются. А себе пока поставь https - lets encript это просто и бесплатно.)


Часовой пояс GMT +3, время: 14:16.