У меня есть домашний аудиоплеер, который отлично работает на моем веб-сайте, когда он связан со страницей с помощью обычного тега script
:
<head>
…
<script type="application/javascript" src="/static/js/player.js"></script>
</head>
Сам скрипт написан на простом JS без каких-либо библиотек, фреймворков,и т.д. Вот демонстрация того, как это работает : вы нажимаете треугольник, игрок начинает играть;Здесь нет ничего особенного. (Это может не работать в некоторых старых браузерах, но сейчас это не имеет значения.)
Однако проигрыватель сломался, если я связал его с динамическим импортом (в браузерах, которые поддерживают этот вид импорта). В HTML другой скрипт index.js
связан вместо player.js
, и этот index.js
импортирует player.js
:
// index.js
console.log('index.js is running…');
import('/static/js/player.js');
Вот вторая демонстрация этой версии ,протестировано в Chrome для Windows и Safari на macOS, все браузеры и ОС имеют последние версии на момент публикации.
player.js
, похоже, загружается и выполняется. Когда я включаю console.log()
s в него, он выводит их именно там, где я ожидаю;Я также не обнаружил никаких отличий во время выполнения от предыдущей версии с отладчиком в Dev Tools.
Но аудиоплеер в этом случае не работает. Если вы нажмете треугольник, то вместо запуска плеера вы получите только прямую ссылку на файл MP3. Первоначально, это было предполагаемое поведение, когда скрипт не был загружен или был сломан;но я не могу понять, что именно ломается в этом случае.
Сценарий player.js
абсолютно одинаков в обоих случаях;единственное отличие заключается в добавлении динамического импорта во втором случае. Пожалуйста, помогите мне найти, что с ним не так.