Модули JavaScript - переход от <script>к «импорт ...» не может быть сделан для некоторых библиотек? - PullRequest
0 голосов
/ 15 декабря 2018

Я был не в курсе, когда JavaScript стал полностью модным - я привык к <script src="https://somecdn/stuff.js"></script>, не уверен в файле package.json и почти не имею опыта с упаковкой модулей.

Иногда яможно перейти с <script src="..." на import {functions} from 'https://somecdn/stuff.mjs'; без проблем.Но в других случаях это не работает.

Может ли все быть загружено с помощью нового оператора импорта, или некоторые скрипты настолько недружелюбны к модулю, что мне не о чем беспокоиться?

Чтобы упростить задачу

  1. Я только на последней версии Chrome
  2. Мой основной скрипт имеет тег модуля: <script type="module" src="js/main.js"></script>

Успешно перемещен из тега сценария для импорта:

import {clear, del, get, keys, set} from 'https://cdn.jsdelivr.net/npm/idb-keyval@3/dist/idb-keyval.mjs';

Но когда я пытаюсь выполнить миграцию

<script src="https://cdnjs.cloudflare.com/ajax/libs/dexie/3.0.0-alpha.6/dexie.js"></script>

, он выдает

Uncaught SyntaxError: The requested module 'https://cdnjs.cloudflare.com/ajax/libs/dexie/3.0.0-alpha.6/dexie.js' does not provide an export named 'default'

Я предполагаю, что проблема не в «mjs», если все обслуживается как правильный Mimetype JS.

1 Ответ

0 голосов
/ 15 декабря 2018

Вы можете только import вещей из файлов, которые export их.

https://cdnjs.cloudflare.com/ajax/libs/dexie/3.0.0-alpha.6/dexie.js, кажется, экспортирует только что-либо (назначая для module.exports) при запуске в среде, где moduleопределяется (т. е. узел).

При запуске в браузере он просто добавляет Dexie к глобальному объекту, ничего не экспортируя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...