multi-lane-manager
Version:
Nacos 泳道管理与请求路由组件
1 lines • 4.76 kB
Source Map (JSON)
{"version":3,"sources":["../src/module.ts"],"sourcesContent":["import { defineNuxtModule, createResolver, addServerHandler } from \"@nuxt/kit\";\n\n/**\n * 多泳道管理模块\n *\n * 这个模块提供了多泳道管理功能,包括:\n * 1. 服务注册与发现:将服务实例注册到 Nacos,并从 Nacos 获取目标泳道的服务实例\n * 2. 跨泳道请求转发:将请求转发到目标泳道的服务实例\n * 3. 健康检查:提供健康检查接口\n */\nexport default defineNuxtModule({\n meta: {\n name: \"multi-lane-manager\",\n configKey: \"multiLaneManager\", // 统一使用与类型定义相同的配置键\n compatibility: {\n nuxt: \"^3.0.0\", // 兼容 Nuxt 3.0.0 及以上版本\n },\n },\n /**\n * 模块设置函数\n * 负责注册 Nitro 插件和服务器中间件\n *\n * @param _options 模块配置选项\n * @param nuxt Nuxt 实例\n */\n setup(_options, nuxt) {\n // 创建简单的日志记录器\n const logger = {\n info: (msg: string) => console.log(`[multi-lane-manager:module][INFO] 🔵 ${msg}`),\n warn: (msg: string) => console.warn(`[multi-lane-manager:module][WARN] 🟠 ${msg}`),\n error: (msg: string) => console.error(`[multi-lane-manager:module][ERROR] 🔴 ${msg}`),\n };\n\n logger.info(\"正在设置 multi-lane-manager 模块...\");\n\n // 创建路径解析器\n const { resolve } = createResolver(import.meta.url);\n\n // 添加 Nitro 插件\n try {\n logger.info(\"正在添加用于服务注册的 Nitro 插件...\");\n nuxt.hook('nitro:config', (nitroConfig) => {\n // 确保 plugins 数组存在\n nitroConfig.plugins = nitroConfig.plugins || [];\n\n // 添加我们的 Nitro 插件到数组的最前面,确保它最早执行\n nitroConfig.plugins.unshift(resolve('./runtime/nitro-plugin'));\n\n logger.info(\"Nitro 插件添加成功 (已设置为最早执行) ✅\");\n });\n } catch (error) {\n logger.error(`添加 Nitro 插件失败: ${error}`);\n }\n\n // 添加服务器中间件\n try {\n logger.info(\"正在添加服务器中间件...\");\n\n // 添加一个全局中间件,确保它在所有其他中间件之前执行\n addServerHandler({\n handler: resolve('./runtime/server-middleware.mjs'),\n middleware: true,\n route: '/**', // 匹配所有路径\n order: -100, // 负数表示更高的优先级,确保最先执行\n });\n\n // 为了确保能拦截静态资源,再添加一个特定的处理程序用于 /_nuxt/ 路径\n addServerHandler({\n handler: resolve('./runtime/server-middleware.mjs'),\n route: '/_nuxt/**', // 专门匹配 /_nuxt/ 路径下的所有请求\n order: -100, // 负数表示更高的优先级,确保最先执行\n });\n\n // 为了确保能拦截 API 请求,添加一个特定的处理程序用于 /api/ 路径\n addServerHandler({\n handler: resolve('./runtime/server-middleware.mjs'),\n route: '/api/**', // 专门匹配 /api/ 路径下的所有请求\n middleware: true, // 确保它作为中间件执行\n order: -100, // 负数表示更高的优先级,确保最先执行\n });\n\n logger.info(\"服务器中间件添加成功,设置为最高优先级 ✅\");\n } catch (error) {\n logger.error(`添加服务器中间件失败: ${error}`);\n }\n\n logger.info(\"Multi-lane-manager 模块设置完成 ✅\");\n },\n});\n"],"mappings":";AAAA,SAAS,kBAAkB,gBAAgB,wBAAwB;AAUnE,IAAO,iBAAQ,iBAAiB;AAAA,EAC9B,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,WAAW;AAAA;AAAA,IACX,eAAe;AAAA,MACb,MAAM;AAAA;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,UAAU,MAAM;AAEpB,UAAM,SAAS;AAAA,MACb,MAAM,CAAC,QAAgB,QAAQ,IAAI,+CAAwC,GAAG,EAAE;AAAA,MAChF,MAAM,CAAC,QAAgB,QAAQ,KAAK,+CAAwC,GAAG,EAAE;AAAA,MACjF,OAAO,CAAC,QAAgB,QAAQ,MAAM,gDAAyC,GAAG,EAAE;AAAA,IACtF;AAEA,WAAO,KAAK,6DAA+B;AAG3C,UAAM,EAAE,QAAQ,IAAI,eAAe,YAAY,GAAG;AAGlD,QAAI;AACF,aAAO,KAAK,0FAAyB;AACrC,WAAK,KAAK,gBAAgB,CAAC,gBAAgB;AAEzC,oBAAY,UAAU,YAAY,WAAW,CAAC;AAG9C,oBAAY,QAAQ,QAAQ,QAAQ,wBAAwB,CAAC;AAE7D,eAAO,KAAK,sGAA2B;AAAA,MACzC,CAAC;AAAA,IACH,SAAS,OAAO;AACd,aAAO,MAAM,gDAAkB,KAAK,EAAE;AAAA,IACxC;AAGA,QAAI;AACF,aAAO,KAAK,iEAAe;AAG3B,uBAAiB;AAAA,QACf,SAAS,QAAQ,iCAAiC;AAAA,QAClD,YAAY;AAAA,QACZ,OAAO;AAAA;AAAA,QACP,OAAO;AAAA;AAAA,MACT,CAAC;AAGD,uBAAiB;AAAA,QACf,SAAS,QAAQ,iCAAiC;AAAA,QAClD,OAAO;AAAA;AAAA,QACP,OAAO;AAAA;AAAA,MACT,CAAC;AAGD,uBAAiB;AAAA,QACf,SAAS,QAAQ,iCAAiC;AAAA,QAClD,OAAO;AAAA;AAAA,QACP,YAAY;AAAA;AAAA,QACZ,OAAO;AAAA;AAAA,MACT,CAAC;AAED,aAAO,KAAK,2HAAuB;AAAA,IACrC,SAAS,OAAO;AACd,aAAO,MAAM,iEAAe,KAAK,EAAE;AAAA,IACrC;AAEA,WAAO,KAAK,gEAA6B;AAAA,EAC3C;AACF,CAAC;","names":[]}