У меня есть модуль ES6 (mymodule) и HTML-страница с JS-кодом, который должен выполняться, когда пользователь открывает страницу. Это мой модуль:
//mymodule.js
class TestClass {
getString() {
return "TestString";
}
}
export {TestClass}
И это моя страница:
//page.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Page</title>
<script src="./mymodule.js" type="module"></script>
</head>
<body>
<h1>Hello World!</h1>
<script type="module">
import {TestClass} from "./mymodule";
let test = new TestClass();
console.log("OUTPUT: " + test.getString());
</script>
</body>
</html>
Page.html и mymodule.js находятся в одной папке, однако, когда я открываю page.html в браузере, у меня ничего не отображается на консоли (нет ошибок, нет вывода) - я использую FF 62.0.3. Как это исправить?
2 ответа
<script src="./mymodule.js" type="module"></script>
Вышеуказанное не нужно. Вы можете удалить это.
import {TestClass} from "./mymodule";
Браузеры не разрешают расширения файлов, как это делает Node.js. (Они не могут, потому что они имеют дело с URL-адресами, а не с файловыми системами, поэтому нет способа получить список файлов в каталоге).
Вам необходимо явно указать URL:
import {TestClass} from "./mymodule.js";
NB: Вам также необходимо загрузить page.html
через HTTP, а не из локальной файловой системы.
Вы можете экспортировать свой класс в ключевое слово по умолчанию.
class TestClass {
getString() {
return "TestString";
}
}
export default {TestClass}
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.