【问题标题】:Can't add directive as plugin in Nuxt application无法在 Nuxt 应用程序中添加指令作为插件
【发布时间】:2019-10-02 18:05:30
【问题描述】:

我正在尝试将Ripple 包合并到我的Nuxt 应用程序中。

Nuxt docs 和包docs example 之后,我在plugins/ 目录中有一个ripple.js 文件,其中包含:

import Vue from 'vue'
import Ripple from 'vue-ripple-directive'
Vue.directive('ripple', Ripple)

然后在nuxt.config.js 我有:

plugins: [
  '~/plugins/ripple.js'
],

但现在该应用程序根本无法运行,屏幕上出现一些 Unexpected token export 错误消息,vm.js 中出现“缺少堆栈帧”错误消息。

我不知道这意味着什么,也不知道我做错了什么,有什么建议吗?

【问题讨论】:

标签: vue.js nuxt.js


【解决方案1】:

这是由于 SSR 错误,无法在服务器上使用 vue-ripple-directive。为了解决这个问题,您需要指示 Nuxt 仅在客户端加载插件。

要解决此问题,请执行以下 2 件事:

首先,将ripple.js 重命名为ripple.client.js

其次,更新 plugins 数组如下:

plugins: [
  '~/plugins/ripple.client.js'
]

.client 后缀表示 nuxt 仅在客户端上运行插件。

更多信息可以找到here

在添加 Vue 插件时,请始终牢记此方法,尤其是当它们以某种方式与 DOM 交互时。我遇到的大多数情况都需要这种方法才能正常运行,因为服务器上的 DOM 不可用。

【讨论】:

  • 现在我收到此错误:Plugin not found: D:\***\***\plugins\ripple.client.js
  • 再次检查您是否已将插件文件重命名为ripple.client.js,并再次检查它的位置。该错误表明其中一个有问题。如果这不起作用,请检查“模式”nuxtjs.org/guide/plugins#client-side-only 上的文档。这是我上面概述的方法的替代方法
  • 我没有重命名它(他们真的应该在文档中指定这个),因为我假设后缀只是 Nuxt 的约定而不是实际的文件名。现在可以使用了,谢谢!
  • 该帖子已更新,以便其他需要此内容的人更清楚
猜你喜欢
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 2021-10-05
  • 2020-04-02
  • 1970-01-01
  • 2022-11-03
  • 2018-02-08
  • 2023-02-24
相关资源
最近更新 更多