Ваши объявления export
и import
в порядке, просто среда не знает, что main.js
предназначен для использования в качестве модуля.
Если вы делаете это на Node.js, подробности смотрите в их документации , но краткая версия либо вставляется "type": "module"
в package.json
, либо используется расширение .mjs
.
Если вы делаете это в браузере тег script
для файла main.js
должен иметь type="module"
, чтобы механизм JavaScript знал, что это модуль. Вот живой пример на CodeSandbox. :
index.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<script src="./main.js" type="module"></script>
<title>Export / Import Example</title>
</head>
<body></body>
</html>
main.js
:
import { num } from "./number.js";
document.body.appendChild(document.createTextNode(`num = ${num}`));
number.js
:
export const num = 5;
(Обратите внимание, что поскольку type="module"
автоматически откладывает скрипт, нет необходимости помещать его в конец body
, как вы делаете с немодульными скриптами.)