Итак ...
КОНТЕКСТ: Spring MVC Приложение, IntelliJ, Thymeleaf
Я создаю страницу регистрации пользователя.
FILE STRUCTURE:
resources
---static
------js
---------register.js
---------security.js
------css
------imgs
---templates
------register.html
REGISTER. HTML
1) импортирует регистр. js script
2) запускает registerUser () при нажатии кнопки
*** registerUser - функция в register. js
< script type="module" th:src="@{/js/register.js}"></script>
< button onclick="registerUser();">enter</button>
--or--
< script type="text/javascript" th:src="@{/js/register.js}"></script>
< button onclick="registerUser();">enter</button>
REGISTER. JS
1) импортирует функцию ha sh из безопасности. js
2 ) определяет функцию, которая внутренне использует ha sh
import {hash} from "./security";
function registerUser() {
...
const uph = hash(username + "%" + password);
...
}
SECURITY. JS
1) функция экспорта ha sh
export function hash(toBeHashed){ ... return hashed; }
ПРОБЛЕМЫ:
1) когда я запускаю как есть с html script type = "module", тогда ...
register:35 Uncaught ReferenceError: registerUser is not defined
at HTMLButtonElement.onclick
2) если я закомментирую первая строка регистра. js (НЕ импортировать функцию ha sh) и html script type = "text / javascript", затем ...
register.js:13 Uncaught ReferenceError: hash is not defined
at registerUser (register.js:13)
at HTMLButtonElement.onclick (register:35)
**so the html is triggering the java function
3), когда я запустить как есть (ничего не закомментировав), но html script type = "text / javascript", затем ...
Uncaught SyntaxError: Cannot use import statement outside a module
, так что в случае # 1
т.е. тип сценария = "модуль"
безопасность. js & регистрация. js файл импортируется корректно (ответ: 200), но безопасность. js импортируется ПОСЛЕ ...
Я предполагаю, что при нажатии кнопки html выполняется поиск функции registerUser () в файле безопасности. js, а не в регистре. js файл (поскольку безопасность. js была импортирована после регистрации. js).
но idk ...
chrome сеть браузера da sh