Невозможно импортировать библиотеку UMD в комплекте с веб-пакетом как импорт ES6 - PullRequest
0 голосов
/ 22 февраля 2019

Я создал библиотеку JavaScript с помощью Webpack.Точка входа someClass.js выглядит следующим образом:

import x from './x'
/* several more imports here */

class SomeClass {}

export default SomeClass;

Моя конфигурация веб-пакета, которая связывает эту библиотеку, выглядит следующим образом:

module.exports = {
    entry: './someClass.js',
    output: {
        path: __dirname,
        filename: 'lib.js',
        library: 'lib',
        libraryTarget: 'umd',
    },

Затем я импортирую сгенерированный lib.js в простой index.html, который определяется следующим образом:

<!DOCTYPE html>
<html>
<head>
</head>

<body>
<script src="app.js" type="module"></script>
</body>
</html>

В app.js я просто пытаюсь импортировать файл следующим образом:

import  * as lib from './lib.js';

console.log(lib);

// Output: Module {Symbol(Symbol.toStringTag): "Module"}   Symbol(Symbol.toStringTag): "Module"

Однако этот оператор импорта, похоже, неработать как запланировано (я ожидаю, что модуль с полем default, который является моим SomeClass конструктором).

Единственный способ получить доступ к экспорту библиотеки по умолчанию SomeClass - это выполнить глобальный оператор импортав app.js следующим образом, который устанавливает lib как объект на window:

import './lib.js';
console.log(window.lib);

// Output: Module {default: ƒ, __esModule: true, Symbol(Symbol.toStringTag): "Module"} default: class SomeClass_SomeClass

Я не хочу, чтобы мой класс был доступен в глобальном window, поскольку это делает его жесткимдля модульности моего кода.

Я также хочу иметь возможность использовать эту библиотеку в различных местах в Интернете (реагировать на приложения, отдельные html-файлы и т. д.) и поэтому хочу минимизировать зависимости.

Что я могу сделать, чтобы импортировать модуль как импорт es6?

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