【问题标题】:Nuxt.js document is not defined (vuejs-datepicker)Nuxt.js 文档未定义(vuejs-datepicker)
【发布时间】:2020-04-06 05:33:20
【问题描述】:


我做了所有的事情(也许)来解决这个问题,但我的小错误不断出现....:(
首先。我的错误-
第一次加载页面时,我的“vuejs-datepicker”运行良好。
但是当我重新加载它时,出现“参考错误”...
my error screen

第二。我做了什么-

  • 添加 /plugins/vuejs-datepicker 文件

    import Vue from 'vue';
    import Datepicker from 'vuejs-datepicker';
    
    Vue.use(Datepicker);
    
  • 在 nuxt.config.js 中添加 plugins : [{ src: '~plugins/vuejs-datepicker', ssr: false }]

  • 在模板中使用client-only

    <client-only> <datepicker :inline="true"></datepicker> </client-only>


第三。甚至这样做-

  • 在 /plugins/vuejs-datepicker 文件中,
    Vue.use(Datepicker) 更改为 Vue.component('vuejs-datepicker',DatePicker)
  • 在 vue 脚本中,
    更改components: {datepicker}
    components: {'datepicker': () =&gt; import('vuejs-datepicker')},


那么,我现在还应该做什么呢??
有什么想法吗?
谢谢..

【问题讨论】:

    标签: javascript vue.js datepicker nuxt.js


    【解决方案1】:

    你快到了!

    表示 vuejs-datepicker 在 SSR 上不起作用。

    我遇到了同样的问题,关注this guide我可以解决问题。

    • 首先你必须安装组件

      npm i vuejs-datepicker
      
    • 其次,您需要在plugins目录下创建一个插件文件,例如:vue-datepicker.js,内容如下:

      import Vue from 'vue'
      import Datepicker from 'vuejs-datepicker'
      Vue.component('date-picker', Datepicker)
      

      在此步骤中,您将在组件的上下文中注册为 date-picker,从 vuejs-datepicker 导入,此名称很重要,因为您将使用原始 datepicker 的名称。

    • 下一步是在nuxt.config.js注册你的新插件

      plugins : [
                ...OthersPlugins,
                 { src: '~/plugins/vue-datepicker', mode: 'client' }
                ] 
      

      通过这种方式,您将只能从客户端使用此组件。

    • 最后一步是在组件或页面中以date-picker 的身份使用您的日期选择器,但现在使用第二步中使用的名称

      <date-picker ..options/>
      

      您不需要在组件中导入任何内容,这个date-picker 现在可以在项目中的每个组件或页面上使用。

    • 如果您想在日期选择器加载时显示任何消息,最后一步(可选)是使用client-only 标记包装此日期选择器。

    有关此的更多信息,请阅读:

    【讨论】:

    • 在我按照您的建议删除导入语句之前无法使其正常工作,谢谢
    【解决方案2】:

    这意味着 vuejs-datepicker 不适用于 SSR。您只需要在客户端上使用它。见https://nuxtjs.org/api/components-client-only/https://nuxtjs.org/guide/plugins/#client-side-only

    【讨论】:

      【解决方案3】:
      //plugin.js   
       import Vue from 'vue';
       import Datepicker from 'vuejs-datepicker';    
       Vue.use(Datepicker);
      
      //nuxt.config.js
      
      plugins : [
                 { src: '~/plugins/plugin.js', ssr: false},
                ] 
      
      //usage
      
      <div>
      <client-only>
      <Datepicker />    
      </client-only>
      
      </div>
      

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      • 虽然这段代码 sn-p 可以解决问题,但它没有解释为什么或如何回答这个问题。请include an explanation for your code,因为这确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
      猜你喜欢
      • 2018-02-13
      • 2021-07-22
      • 1970-01-01
      • 2021-11-29
      • 2021-01-15
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      相关资源
      最近更新 更多