Получение ошибок ссылок на переменные после реализации модулей es6 - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь очистить свой код и впервые внедрить модули es6. Я создал три файла модуля и использую ключевое слово import / export, где это необходимо, и указал type="module" в index.html.

Проблема в том, что все работает правильно, за исключением того, что все глобальные переменные не определены в моем основном файле, и теперь я получаю Reference Errors: Variable not defined, если я пытаюсь console.log(variable) в консоли. Еще больше меня смущает то, что если я помещаю тот же console.log(variable) внутри IIFE в файле, он корректно отображает значение переменной без Reference Error.

Например:

<script type="module">
  let foo = "some text";

  (function() {
    console.log(foo)
  }()); // prints "some text"

  console.log(foo); // prints Reference Error: foo not defined
</script>

Существуют ли специальные правила для обработки глобальных переменных в модулях es6? Я просто очень запутался, потому что все остальное работает правильно, и все, что я изменил, это разделение моего файла с помощью модулей es6 и запуск локального сервера (из-за ошибки CORS при использовании шаблона модуля).

1 Ответ

0 голосов
/ 02 ноября 2019

Похоже, моей проблемой было неправильное понимание того, как работает консоль, и что у нее нет доступа к переменной в файле модуля, если она не стала глобальной, подключив ее к window.

ДляНапример, теперь это позволяет мне получить доступ к рассматриваемой переменной:

let foo = "some text";
window.foo = foo;

console.log(foo); // now prints "some text" in the console instead of Reference Error

Связанные ответы:

Как получить доступ к функциям, определенным в модуле es6, в консоли javascript браузера

Как правильно определить глобальную переменную в модулях ES6?

...