Я не могу получить базовый импорт ES6 на работу

1

Извините, но какой основной тупой я делаю неправильно? Я следую этому примеру кода. Нужен ли мне специальный способ обслуживания кода? (Я использую 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...
}
  • 0
    какой упаковщик вы используете?
  • 1
    @lankovova если вообще есть;)
Показать ещё 7 комментариев
Теги:
ecmascript-6
export
import

1 ответ

1

Ты пытался

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

  • 0
    Да, пробовал, те же проблемы. Но спасибо за среднюю статью, проверим это ...
  • 0
    попробуйте дать вашему сценарию тег type="module" и посмотрите, работает ли он
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню