Когда вы загружаете app.js в ваш HTML-файл, попробуйте добавить:
<script type="module" src="js/app.js"></script>
Это должно работать, когда вы хотите использовать ESModules. Но, пожалуйста, обновите нас, независимо от того:)
Обновление:
Хорошо, после создания проекта с использованием HTML и JS я обнаружил несколько ошибок.
Во-первых: при использовании ESModules, вы не можете использовать какие-либо функции в JS через ваш HTML, вам придется вводить все из app.js.
index.html:
<body>
<div id="sidenav">
Here be the links to other pages
</div>
<br>
<footer id="footer">
Done whenever. Copyright is mine.
</footer>
<script type="module" src="js/app.js"></script>
app.js:
import { createSidebar } from './visualModules/sidebarmodule.js';
cumulator();
function cumulator() {
createSidebar()
}
Обратите внимание на две вещи: в конце импорта, поскольку мы не используем компилятор, модули не распознают файлы без их расширения. Поэтому мне пришлось добавить .js в sidebarmodule. Во-вторых, мне пришлось вызывать функцию кумулятора в файле app.js (как я уже говорил ранее, вы не можете использовать какие-либо функции модуля вне их области действия. В ESModules нет глобальных переменных).
sidebarmodule.js:
function sidebarAdder(pages) {
const sidebar = document.getElementById("sidenav")
const list = document.createElement("UL")
for(var index = 0; index < pages.length; index++) {
const ul = document.createElement("LI")
const a = document.createElement("A")
a.setAttribute("href", "/" + pages[index])
a.innerHTML = "" + pages[index]
ul.appendChild(a)
list.appendChild(ul)
}
sidebar.appendChild(list)
}
export function createSidebar() {
var pages = [
"home",
"tradingpost"
]
sidebarAdder(pages)
}
Вы не объявили индекс внутри цикла for, поэтому я просто добавил переменную.
Надеюсь, это поможет.