multi-lane-manager
Version:
Nacos 泳道管理与请求路由组件
74 lines • 2.9 kB
JavaScript
// src/module.ts
import { defineNuxtModule, createResolver, addServerHandler } from "@nuxt/kit";
var module_default = defineNuxtModule({
meta: {
name: "multi-lane-manager",
configKey: "multiLaneManager",
// 统一使用与类型定义相同的配置键
compatibility: {
nuxt: "^3.0.0"
// 兼容 Nuxt 3.0.0 及以上版本
}
},
/**
* 模块设置函数
* 负责注册 Nitro 插件和服务器中间件
*
* @param _options 模块配置选项
* @param nuxt Nuxt 实例
*/
setup(_options, nuxt) {
const logger = {
info: (msg) => console.log(`[multi-lane-manager:module][INFO] \u{1F535} ${msg}`),
warn: (msg) => console.warn(`[multi-lane-manager:module][WARN] \u{1F7E0} ${msg}`),
error: (msg) => console.error(`[multi-lane-manager:module][ERROR] \u{1F534} ${msg}`)
};
logger.info("\u6B63\u5728\u8BBE\u7F6E multi-lane-manager \u6A21\u5757...");
const { resolve } = createResolver(import.meta.url);
try {
logger.info("\u6B63\u5728\u6DFB\u52A0\u7528\u4E8E\u670D\u52A1\u6CE8\u518C\u7684 Nitro \u63D2\u4EF6...");
nuxt.hook("nitro:config", (nitroConfig) => {
nitroConfig.plugins = nitroConfig.plugins || [];
nitroConfig.plugins.unshift(resolve("./runtime/nitro-plugin"));
logger.info("Nitro \u63D2\u4EF6\u6DFB\u52A0\u6210\u529F (\u5DF2\u8BBE\u7F6E\u4E3A\u6700\u65E9\u6267\u884C) \u2705");
});
} catch (error) {
logger.error(`\u6DFB\u52A0 Nitro \u63D2\u4EF6\u5931\u8D25: ${error}`);
}
try {
logger.info("\u6B63\u5728\u6DFB\u52A0\u670D\u52A1\u5668\u4E2D\u95F4\u4EF6...");
addServerHandler({
handler: resolve("./runtime/server-middleware.mjs"),
middleware: true,
route: "/**",
// 匹配所有路径
order: -100
// 负数表示更高的优先级,确保最先执行
});
addServerHandler({
handler: resolve("./runtime/server-middleware.mjs"),
route: "/_nuxt/**",
// 专门匹配 /_nuxt/ 路径下的所有请求
order: -100
// 负数表示更高的优先级,确保最先执行
});
addServerHandler({
handler: resolve("./runtime/server-middleware.mjs"),
route: "/api/**",
// 专门匹配 /api/ 路径下的所有请求
middleware: true,
// 确保它作为中间件执行
order: -100
// 负数表示更高的优先级,确保最先执行
});
logger.info("\u670D\u52A1\u5668\u4E2D\u95F4\u4EF6\u6DFB\u52A0\u6210\u529F\uFF0C\u8BBE\u7F6E\u4E3A\u6700\u9AD8\u4F18\u5148\u7EA7 \u2705");
} catch (error) {
logger.error(`\u6DFB\u52A0\u670D\u52A1\u5668\u4E2D\u95F4\u4EF6\u5931\u8D25: ${error}`);
}
logger.info("Multi-lane-manager \u6A21\u5757\u8BBE\u7F6E\u5B8C\u6210 \u2705");
}
});
export {
module_default as default
};
//# sourceMappingURL=module.mjs.map