From 711a060dd9f877c47c42ddd06fa39979cab884e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 22 Jan 2026 11:58:13 +0800 Subject: [PATCH] Add support for CJS environment loader in main entry Checks for the NAPCAT_NODE_CJS_ENV_LOADER_PATH environment variable and loads the specified CommonJS environment loader if present. Logs success or failure and exits on error. This allows for custom environment setup before continuing with the main process. --- packages/napcat-shell/napcat.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/napcat-shell/napcat.ts b/packages/napcat-shell/napcat.ts index 2b513f1c..d42aa369 100644 --- a/packages/napcat-shell/napcat.ts +++ b/packages/napcat-shell/napcat.ts @@ -8,6 +8,7 @@ import { webUiRuntimePort } from '@/napcat-webui-backend/index'; import { createProcessManager, type IProcessManager, type IWorkerProcess } from './process-api'; import path from 'path'; import { fileURLToPath } from 'url'; +import { createRequire } from 'module'; // ES 模块中获取 __dirname const __filename = fileURLToPath(import.meta.url); @@ -323,6 +324,20 @@ async function startWorkerProcess (): Promise { * 主入口 */ async function main (): Promise { + // 检查是否启用了 CJS 环境加载器 + const cjsLoaderPath = process.env['NAPCAT_NODE_CJS_ENV_LOADER_PATH']; + if (cjsLoaderPath) { + try { + logger.log(`[NapCat] [Process] 使用 CJS 环境加载器: ${cjsLoaderPath}`); + const require = createRequire(import.meta.url); + require(cjsLoaderPath); + return; + } catch (e) { + logger.logError('[NapCat] [Process] CJS 环境加载器加载失败:', e); + process.exit(1); + } + } + // 单进程模式:直接启动核心 if (ENV.isMultiProcessDisabled) { await NCoreInitShell();