Я попытался импортировать модуль через тег скрипта,
<script type="module">
import phonebar from "https://unpkg.com/jssip-emicnet/dist/phonebar.js"
Я получил ошибку
Запрошенный модуль 'https://unpkg.com/jssip-emicnet/dist/phonebar.js "не предоставляет экспорт с именем" default "
Я изменил его на так называемый «Импортировать модуль только из-за его побочных эффектов», и он работал, как ожидалось.
<script type="module">
import "https://unpkg.com/jssip-emicnet/dist/phonebar.js"
MDN заявил, что import '/modules/my-module.js';
должен
Импортируйте весь модуль только для побочных эффектов, ничего не импортируя. Это запускает глобальный код модуля, но на самом деле не импортирует никаких значений.
Эти слова не имели для меня смысла. Кроме того, если я использую npm + webpack для создания простого проекта. npm i jssip-emicnet
тогда я могу правильно импортировать телефонную панель в свой код js.
import phonebar from 'jssip-emicnet/dist/phonebar';
Так почему я не могу импортировать его через тег <script>
в браузере?
На самом деле я являюсь автором jssip-emicnet. phone.js
такой
class Phone {
...
}
export default Phone
И моя настройка вывода веб-пакета такова
entry: {
phonebar: './src/ui/phone.js'
},
output: {
path: path.resolve(__dirname, './dist'),
filename: '[name].js',
libraryTarget: 'umd',
libraryExport: 'default',
umdNamedDefine: true,
library: '[name]'
},
Поэтому я не уверен, что это потому, что я что-то пропустил в настройках своего веб-пакета.
----- Обновить -----
С комментариями, которые я получил, я нашел этот Вывод модуля ES с помощью webpack
Вопрос касался webpack 2, и я использую webpack 4, но поскольку эта проблема все еще открыта, https://github.com/webpack/webpack/issues/2933, возможно, веб-пакет еще не поддерживает это.
UMD несовместим с модулями JavaScript также помогает объяснить модули umd и es6.
libraryTarget: 'umd'
означает, что вы больше не создаете модуль ES6. В нем нет объявленийexport
, которые можно импортировать с использованием синтаксиса модуля. - person Bergi   schedule 18.08.2019libraryTarget: 'es6'
было бы моим предположением, но я не проверял документы? Если веб-пакет вам не подходит, используйте накопительный пакет, который определенно поддерживает модули ES6. - person Bergi   schedule 18.08.2019