【问题标题】:nuxt with vue-dragscroll: window is not defined带有 vue-dragscroll 的 nuxt:未定义窗口
【发布时间】:2020-07-07 21:10:02
【问题描述】:

我正在尝试将vue-dragscrollnuxtjs 一起使用。

我是nuxtjs 的新手,我之前一直在使用vue-dragscroll 和普通的vuejs

我看到了一个错误没有定义窗口,我查看了vue-dragscroll 文档,但仍然找不到解决方案。

这就是我实现vue-dragscroll的方式

<template lang="pug">
  div
    CountriesSearch.mb-2
    div#countryList(v-for="country in countries" :key="country.country" v-dragscroll)
      CountryItem(:country="country" v-if="country.Country")
</template>

<script>
import { dragscroll } from 'vue-dragscroll'

export default {
  directives: {
    dragscroll
  },

【问题讨论】:

    标签: vue.js nuxt.js


    【解决方案1】:

    您必须在 plugin 文件中将其声明为指令。

    // plugins/vue-dragscroll.js
    import Vue from 'vue'
    import { dragscroll } from 'vue-dragscroll'
    
    Vue.directive('dragscroll', dragscroll)
    

    然后,在您的 nuxt.config.js 中将该插件文件添加到您的 plugins: [] 数组中:

    { src: '@/plugins/vue-dragscroll.js', ssr: false }
    

    此指令利用了在 SSR 期间不可用的 window,因此您的错误。

    【讨论】:

    • 谢谢你成功了!如果我这样做,它将被注册为全球对吗?有没有办法只注册单个组件使用?
    • @Evan 不幸的是,这确实污染了全局范围并且没有解决方法。您可以分叉该存储库,并且仅在 window 可用时才加载它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2020-04-26
    相关资源
    最近更新 更多