как установить vue аддон с тем же экземпляром vue, что и основное приложение - PullRequest
0 голосов
/ 26 мая 2020
Компонент

Vue, созданный с помощью vue -sf c -rollup , имеет эту часть кода установки, которую я не могу достичь.

// To auto-install on non-es builds, when vue is found
// eslint-disable-next-line no-redeclare
/* global window, global */
if ('false' === process.env.ES_BUILD) {
  let GlobalVue = null;
  if (typeof window !== 'undefined') {
    GlobalVue = window.Vue;
  } else if (typeof global !== 'undefined') {
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    GlobalVue = (global as any).Vue;
  }
  if (GlobalVue) {
    // ***********
    //
    // NEVER REACH
    //
    // ***********
    (GlobalVue as typeof _Vue).use(plugin);
  }
}

Я пробовал это

const global: any = window
global.Vue = Vue

или это

const global: any = window

const vm = new Vue({
  render: (h): VNode => h(Dev),
}).$mount('#app');

global.Vue = vm

но глобальный vue недоступен в момент установки плагина

Я спрашиваю, потому что если я использую компонент класса в аддоне

@Component
export default class TheComponent extends Vue {

Тогда я получаю следующие предупреждения в основном приложении:

vue .runtime.esm. js
[ Vue warn]: $ attrs только для чтения.
[Vue warn]: $ listeners только для чтения.

Я думаю, это потому, что компонент установлен в другом экземпляре vue.

РЕДАКТИРОВАТЬ: конечно, я устанавливаю плагин таким образом

Vue.use(TheComponent)
...