nuxt.js - 如何在 NPM 链接的 Nuxt 插件中引用 Vue 组件?
问题描述
我有一个自定义 Nuxt 模块,它是 NPM 链接的,并添加了一个插件,如下所示:
import path from 'path'
export default function (moduleOptions) {
this.addPlugin(path.resolve(__dirname, 'plugin.js'))
}
这很好,插件然后导入一个相关的 Vue 组件并添加到路由器,如下所示:
import ProductListing from './components/ProductListing.vue'
export default ({ app }, inject) => {
app.router.addRoutes([
{
path: '/products',
name: 'products',
component: ProductListing,
meta: {
permissions: ['manage_catalogue']
}
}
])
}
当我运行时,npm run dev
我收到错误:
This relative module was not found: friendly-errors 16:48:40
friendly-errors 16:48:40
* ./components/ProductListing.vue in ./.nuxt/src.plugin.2237471c.js
哪种有意义,因为它试图在与 .nuxt 文件夹的关系中找到它,但我无法弄清楚我打算如何让它来解析组件?如果我将模块/插件移动到modules
Nuxt 项目的文件夹中,那很好。
我试过的
尝试添加 webpack 配置以不解析符号链接
extend (config, { isDev, isClient }) {
Object.assign(config.resolve, {
symlinks: false
})
}
我尝试将模块添加到 transpile 构建选项,如下所示:
build: {
transpile: [
'@symlinked/module'
]
}
我尝试使用 webpack 和 vue 加载器将模块编译为 commonjs,这只是给出了关于模板的完全不同的错误。
在这一点上,我有点不知所措,希望有人遇到过类似的情况并克服它。谢谢!
解决方案
为了ProductListing
在您的插件中使用并导入它,您必须PluginListings.vue
在模块中添加为模板。将文件添加为模板对 nuxt 说,您必须将此文件复制到.nuxt
目录中
import path from 'path'
export default function (moduleOptions) {
// add ProductListing as template
this.addTemplate(path.resolve(__dirname, 'ProductListing.vue'))
// register plugin
this.addPlugin(path.resolve(__dirname, 'plugin.js'))
}
推荐阅读
- xpath - 基于另一个元素值的 Xpath
- javascript - React 和 Redux:Onclick 删除按钮返回未定义
- javafx - 显示奇怪字符的场景生成器编辑器
- graphql - 如何使用 Dgraph GraphQL API 正确附加到数组?
- php - 在 Laravel 调度器中执行长的多 Bash 命令
- javascript - 用于查找元素标记名和属性的正则表达式“跳过”属性
- dictionary - 如何使用多个键过滤字典
- javascript - 如何在 React 中列出对象中的单个键值
- c - 在 C 中无法退出 While 循环
- c# - 是否可以在同一个类中使用同一接口的不同实现,使用 Microsoft.Extensions.DependencyInjection 中的服务