Извините, но какой основной тупой я делаю неправильно? Я следую этому примеру кода. Нужен ли мне специальный способ обслуживания кода? (Я использую http-сервер)
Chrome жалуется на
Минимальный код:
mini.js
import {doSomething2} from "mini2";
// import doSomething2 from "mini2"; also fails
// also tried ... from "./mini2"
function doSomething1(url, opts) {
return "mini1 " + doSomething2(url);
}
mini2.js
export function doSomething2(url, opts) {
return ("mini2 " + url);
}
mini.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>Test</title>
<script src="mini.js"></script>
</head>
<body onload="console.log(doSomething1('hi there'))">
<header>
</header>
<main>
<h1> Test </h1>
</main>
</body>
</html>
Обновление: я не использую транспилятор или связной. Следуя совету @MohammedWaleed, если файл.html использует type = "module"
а mini.js импортирует mini2.js с подробным путем, import {doSomething2} from './mini2.js';
, вещи более или менее работают. Я могу запустить встроенный код из mini.js, который вызывает mini2.js. Проблема в том, что функции в mini.js, например dosomething1()
, кажутся невидимыми.
Обновление 2 комментариев @loganfsmyth. Кажется, что если ваш скрипт имеет тип "модуль", вы должны настроить глобальные переменные вручную. Немного неудобно, но прекрасно. Чтобы не загрязнять глобальное пространство окна слишком много, возможно, лучше всего использовать свойство окна, здесь я просто использовал "mini":
window.mini = {
doSomething1 :function doSomething1(url) {
return "mini " + doSomething2(url);
}
anotherFunction: blah blah...
}
Ты пытался
import {doSomething2} from "mini2.js";
поскольку я заметил, что он включен в файлы в следующей ссылке, так или иначе вы должны проверить ссылку, это поможет вам
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
Изменение: я нашел эту статью на среднем, это поможет вам
https://medium.com/dev-channel/es6-modules-in-chrome-canary-m60-ba588dfb8ab7
type="module"
и посмотрите, работает ли он