当我在 module.ts 中注册 Nuxt Nitro 插件时失败

问题描述 投票:0回答:1

我从“#build/types/nitro-imports”导入defineNitroPlugin来创建一个硝基插件。我的硝基插件代码如下所示。然后我在 module.ts 文件中注册该插件。但是,当我构建项目时,通过添加硝基钩子,即 硝基.钩子(等

),我收到错误

                 //src/plugins/kafka-plugin.ts -- nitro plugin
                 import _ from 'lodash'
                 import { useRuntimeConfig } from '#imports
                 import { defineNitroPlugin } from '#build/types/nitro-imports';
                 import { kafkaFactory } from 'kafka-factory'
               
                 const kafkaFactoryInstance = (kafkaOptions: any) => {
                   return kafkaFactory(kafkaOptions)
                 };  
   
                 export default defineNitroPlugin((nitroApp) => {
                   console.log('Nitro plugin', nitroApp)
                   const config = useRuntimeConfig()
                   nitroApp.hooks.hook('request', (event) => {
                   const kafkaOptions = config.public.kafkaOptions
                   const kafkaFactory = kafkaFactoryInstance(kafkaOptions)
                   event.context.kafkaFactory = kafkaFactory
                 })   
               })

这是 module.ts 文件 在 src/module.ts 中


                 import { defineNuxtModule, createResolver } from '@nuxt/kit';

                 export default defineNuxtModule({
                    meta: {
                       name: 'kafka-module',
                      configKey: 'kakfaProperties',
                  }, 
                  defaults: {
                    kafkaOptions: {
                      appName: 'kafka-module',
                     // my kafka options...
                   },
                },
                setup(moduleOptions, nuxt) {
                const { resolve } = createResolver(import.meta.url);
                const nuxtOptions = nuxt.options;
                const mergedOptions = _.merge(
                    nuxtOptions.runtimeConfig.public.kakfaProperties || {},
                    moduleOptions
                );
                nuxtOptions.runtimeConfig.public.kakfaProperties = mergedOptions;
                // adding this makes it fail
                nuxt.hook('nitro:config', (nitro) => {
                // ensure `nitro.plugins` is initialized
                nitro.plugins = nitro.plugins || []

                 // add your custom plugin
                nitro.plugins.push(resolve('./plugins/kafka-plugin'))
              })
            }

          });

当我运行 npm run prepack 即 nuxt-module-build build 时,它失败并出现以下错误。我添加了注册硝基插件的代码,然后它失败了。

错误服务器运行时不允许使用 Vue 应用程序别名。 [从 ../src/plugins/kafka-plugin.ts 导入#build/types/硝基导入] 7:08:41 AM [硝基 10:46:08 PM] 错误错误:无法加载 /Users/reuz/projects/kafka-module/playground/.nuxt/types/nitro-imports (由 src/plugins/kafka-plugin.ts 导入): ENOENT:没有这样的文件或目录,打开 '/Users/reuz/projects/kafka-module/playground/.nuxt/types/nitro-imports'

为什么包里有defineNitroPlugin却失败?我不知道为什么它在游乐场 .nuxt 文件夹中寻找它。它还会抱怨,因为我导入了带有 Vue 应用程序别名的硝基包,但无法在服务器运行时导入。那么我该如何定义插件呢?

nuxt.js nuxtjs3
1个回答
0
投票

我犯了从“@nuxt/app”而不是“#imports”导入defineNuxtPlugin的错误,导致它失败

© www.soinside.com 2019 - 2024. All rights reserved.