我从“#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/app”而不是“#imports”导入defineNuxtPlugin的错误,导致它失败