From 052e7fa2b36c7e51269556ff5bede26d884b5883 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: Fri, 20 Feb 2026 21:39:50 +0800 Subject: [PATCH] Init nativePacketHandler after loading wrapper && fix #1633 Delay initialization of nativePacketHandler until after loadQQWrapper so that wrapper.node is loaded before initializing hooks. Moved the await nativePacketHandler.init(...) call below loadQQWrapper and added an explanatory comment to ensure native hooks are set up only after the native module is available. --- packages/napcat-shell/base.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/napcat-shell/base.ts b/packages/napcat-shell/base.ts index ab8a6ac3..05ebd2b5 100644 --- a/packages/napcat-shell/base.ts +++ b/packages/napcat-shell/base.ts @@ -419,7 +419,6 @@ export async function NCoreInitShell () { const basicInfoWrapper = new QQBasicInfoWrapper({ logger }); const nativePacketHandler = new NativePacketHandler({ logger }); const napi2nativeLoader = new Napi2NativeLoader({ logger }); - await nativePacketHandler.init(basicInfoWrapper.getFullQQVersion()); // 初始化 FFmpeg 服务 await FFmpegService.init(pathWrapper.binaryPath, logger); @@ -428,6 +427,8 @@ export async function NCoreInitShell () { await connectToNamedPipe(logger).catch(e => logger.logError('命名管道连接失败', e)); } const wrapper = loadQQWrapper(basicInfoWrapper.QQMainPath, basicInfoWrapper.getFullQQVersion()); + // wrapper.node 加载后再初始化 hook + await nativePacketHandler.init(basicInfoWrapper.getFullQQVersion()); if (process.env['NAPCAT_ENABLE_VERBOSE_LOG'] === '1') { napi2nativeLoader.nativeExports.setVerbose?.(true); }