我有一个自定义的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文件夹的关系中找到它,但是我无法弄清楚如何获取它来解析该组件?如果我将模块/插件移到Nuxt项目的modules
文件夹中,就可以了。
试图添加webpack配置以不解析符号链接
extend (config, { isDev, isClient }) {
Object.assign(config.resolve, {
symlinks: false
})
}
我试图像这样将模块添加到可转换构建选项中:
build: {
transpile: [
'@symlinked/module'
]
}
我尝试使用webpack和vue loader将模块编译为commonjs,这只会给模板带来完全不同的错误。
在这一点上,我有点不知所措,希望有人遇到类似的情况并克服它。谢谢!
答案 0 :(得分:0)
为了在插件中使用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'))
}