Я воссоздал все приложение, и оно работает для меня. Я перенес компонент с накопительным пакетом и импортировал его в приложение, созданное с помощью vue CLI.
Единственное, что меня удивляет, это то, что вы не импортировали компонент по умолчанию?
import { MyDynamicComponent } from 'my-bundled-rollup-library';
// to
import MyDynamicComponent from 'my-bundled-rollup-library';
Вы экспортируете его по умолчанию, поэтому вы должны импортировать его по умолчанию.
Информация Это часть внутри vue, которая создает новый объект "sub" прототипа с "super" прототипом https://github.com/vuejs/vue/blob/dev/src/core/global-api/extend.js#L36
rollup.config. js
import vue from 'rollup-plugin-vue'
export default {
input: 'component.vue',
output: {
format: 'esm',
file: 'dist/MyComponent.js'
},
plugins: [
vue()
]
}
dist / MyComponent. js
Это сгенерированный файл из MyComponent. vue
import { openBlock, createBlock } from 'vue';
//
//
//
var script = {
props: {
hello: {
type: String,
},
},
created() {
console.warn('MY_COMPONENT', this.$example); // should work
},
};
function render(_ctx, _cache) {
return (openBlock(), createBlock("div", null, "hoi"))
}
script.render = render;
script.__file = "component.vue";
export default script;
Приложение. vue (тег скрипта)
import Vue from 'vue';
import MyComponent from './dist/MyComponent'; // throws some warnings, but this is not relevant for this post
export default {
name: 'App',
created() {
const DynamicComponent = Vue.extend(MyComponent);
const instance = new DynamicComponent({
propsData: {
hello: 'world',
},
});
console.log('instance', instance.$example);
},
};