Как импортировать функцию javascript из файла 1. js в функцию из файла 2. js, а затем запустить функцию file2. js по нажатию кнопки html? - PullRequest
0 голосов
/ 23 января 2020

Итак ...

КОНТЕКСТ: 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

...