Я играю с некоторыми ES6
функциями, используя Chrome v65
У меня есть следующие файлы:
base.js :
export function consoleLogger(message) {
console.log(message);
}
main.js
import { consoleLogger } from './base.js';
consoleLogger('Some message');
utils.js
function sayMyName(name) {
console.log(name);
}
imports.html
<!DOCTYPE html>
<html>
<head>
<script src='./main.js' type='module'></script>
<script src='./utils.js'></script>
</head>
<body>
<script>
sayMyName('Cool name');
</script>
</body>
</html>
Используется вот так все вроде нормально, а в консоли я получаю
Классное имя utils.js: 2
Некоторые сообщения base.js: 2
Однако давайте представим сценарий, где мне нужны дополнительные данные, чтобы составить сообщение для метода consoleLogger
. Тогда я хотел бы иметь что-то вроде этого в main.js
function logToConsole(msg) {
consoleLogger(msg);
}
и import.html
<script>
sayMyName('Cool name');
logToConsole('Send from log to console');
</script>
затем для вызова logToConsole('Send from log to console');
в моем файле html
в консоли я получаю:
Uncaught ReferenceError: logToConsole не определена
at import.html: 10
Таким образом, нет проблем импортировать consoleLogger
из base.js
и вызывать его напрямую в main.js
, нет проблем с включением другого файла .js (utils.js
) и вызовом методов оттуда, но если Я пытаюсь вызвать метод, объявленный в main.js
, который внутренне вызывает импортированный метод. Я получил ошибку сверху. Как кажется, даже не имеет значения, ссылается ли метод из main.js
на импортированный метод или нет. Я просто все прокомментировал и оставил только один простой метод
main.js
import { consoleLogger } from './base.js';
/*function logToConsole(msg) {
consoleLogger(msg);
}
consoleLogger('Some message');*/
function randomStuff() {
console.log('random stuff');
}
и в консоли я получил эту ошибку:
import.html: 11 Uncaught ReferenceError: randomStuff не определен
at import.html: 11
Может кто-нибудь объяснить мне причину такого поведения?