Это происходит из-за того, что установка Vue CLI Webpack по умолчанию не импортирует модули commonjs, как описано в вашем «основном» поле в package.json. Таким образом, проблема связана с проектом, который пытается импортировать, а не с проектом, который экспортирует компонент.
Есть два способа решить эту проблему.
- Со стороны импортирующего проекта
Вы можете исправить это, установив плагины babel для проекта, который импортирует ваши компоненты, и установив babel.config.js
module.exports = {
presets: [
'@vue/app'
],
plugins: [
'@babel/plugin-transform-modules-commonjs', // leave to import .common.js files
'@babel/plugin-transform-modules-umd' // leave to import .umd.js files
]
}
Но одного этого будет недостаточно: вам также нужно будет импортировать CSS, сгенерированный библиотекой, добавив его в ваш файл ввода
import 'hello-world/dist/vue-hello-world.css';
Обратите внимание, что я только что проверил это, используя ссылку пряжи, но я уверен, что это будет прекрасно работать с импортированным отдельным модулем npm.
- Со стороны библиотеки
Цель (я полагаю) первоначального вопроса - как мне связать библиотеку, чтобы моим пользователям не приходилось делать этот маленький танец каждый раз, когда они хотят его использовать?
Вариант 1: не связывать его - предоставьте .vue файлы и источники. Просто включите все в каталог 'src' вашего модуля, напишите readme с объяснением и покончите с этим. Пусть импортирующий проект вычислит компиляцию и комплектацию.
Вариант 2: используйте свертку с плагином Vue, чтобы свернуть компоненты в связку. Есть пример того, как это сделать. В этом примере вы можете видеть, что ваш проект сможет импортировать .esm build
https://github.com/vuejs/rollup-plugin-vue/tree/master/cookbook/library