仅限 Nuxt 本地导入客户端

Nuxt local import client only

我正在尝试在 Nuxt 2 中使用 VuePlyr。现在我将它用作插件 /plugins/vue-plyr.js,

import Vue from 'vue'
import VuePlyr from '@skjnldsv/vue-plyr'
import 'vue-plyr/dist/vue-plyr.css'

Vue.use(VuePlyr)

但它只在一个页面中使用,所以我想将它从主包中删除,并在使用时在本地导入它。我已经在我的页面中尝试过这个(使用插件时模板部分正在工作)。

<template>
  <client-only>
    <vue-plyr>
      <div data-plyr-provider="vimeo" :data-plyr-embed-id="id" />
    </vue-plyr>
  </client-only>
</template>

<script>
import 'vue-plyr/dist/vue-plyr.css'
import Vue from 'vue'

export default {

  async mounted () {
    const VuePlyr = await import('@skjnldsv/vue-plyr')
    Vue.use(VuePlyr)
  }
}
</script>

但不幸的是,我遇到了这个错误

[Vue warn]: Unknown custom element: <vue-plyr> - did you register the component correctly?

知道如何实现吗?与

相关

在您的 nuxt 配置中将插件定义为仅客户端:

plugins: [
    { src: "~/plugins/vue-plyr.js", mode: "client" }
],

然后还要确保在组件的使用周围有一个 client-only 标记:

<template>
  <client-only>
    <vue-plyr>
      <div data-plyr-provider="vimeo" :data-plyr-embed-id="id" />
    </vue-plyr>
  </client-only>
</template>

编辑:如果您将其添加为插件,则无需在安装方法中再次导入该组件

你可以这样导入它

export default {
  components: {
    [process.client && 'VuePlyr']: () => import('@skjnldsv/vue-plyr'),
  }
}

中所述。