Модуль типа JavaScript не выполняется - PullRequest
0 голосов
/ 28 марта 2020

У меня есть файл ниже html:

<!DOCTYPE html> 
<html lang="en"> 

<head> 

</head> 

<body> 

    <script type="module">
        console.log("test");
    </script>

</body>
</html>

Однако консоль ничего не печатает. Если я удаляю type="module", это работает хорошо. Используемая версия Chrome - 58.0.3029.81. Я также погуглил и проверил мою текущую Chrome поддержку ES6.

Есть идеи почему?

1 Ответ

1 голос
/ 28 марта 2020

Это не поддерживается в версии 58. https://caniuse.com/#search = тип% 3D% 22module% 22 * ​​1003 *

Но вы можете использовать nomodule для совместимости с ним.

Атрибут nomodule является логическим атрибутом, который запрещает выполнение скрипта в пользовательских агентах, которые поддерживают скрипты модуля. Это позволяет выборочно выполнять скрипты модуля в современных пользовательских агентах и ​​скрипты classi c в старых пользовательских агентах, как показано ниже. Атрибут nomodule не должен быть указан в скриптах модуля (и будет игнорироваться, если он есть).

Вот html .spe c .whatwg.org ' Пример s

В этом примере показано, как включить скрипт модуля для современных пользовательских агентов и скрипт classi c для старых пользовательских агентов:

<script type="module" src="app.mjs"></script>
<script nomodule defer src="classic-app-bundle.js"></script>

В современных пользовательских агентах, которые поддерживают скрипты модуля, элемент script с атрибутом nomodule будет игнорироваться, а элемент script с типом "module" будет выбираться и оцениваться (как скрипт модуля). И наоборот, более старые пользовательские агенты будут игнорировать элемент сценария с типом «модуль», так как это неизвестный тип сценария для них, но у них не будет проблем с получением и оценкой другого элемента сценария (как сценарий classi c) , поскольку они не реализуют атрибут nomodule.

Это означает, что поддерживается более высокая версия, чем 61 type=module и nomodule, тогда:

  1. Сценарий будет быть выполненным в элементе script с типом «module».
  2. Скрипт не будет выполнен в элементе script с атрибутом «nomodule».

и ниже, чем версия 60 type=module и nomodule не поддерживаются, тогда:

  1. Скрипт не будет выполнен в элементе скрипта с типом «модуль», поскольку type=module - неизвестный тип скрипта для браузера .
  2. Сценарий будет выполнен в элементе script с атрибутом «nomodule», поскольку браузер не реализует атрибут «nomodule».

Надеюсь, что это поможет вам. * 10 47 *

...