Skip to content

Commit 78d46aa

Browse files
claude-code-bestglm-5-turbo
andcommitted
fix: 替换 extractMemories 的 require() 为动态 import() 修复 Vite 构建崩溃
Vite/Rollup 构建时将 require() 通过 __toCommonJS() 包装 ESM 导出, 导致命名导出被包裹在 { default: namespace } 中,访问 extractMemoriesModule.initExtractMemories 为 undefined 触发 React error boundary 崩溃。改用标准 ESM 动态 import() 绕过 CJS interop。 Co-Authored-By: glm-5-turbo <zai-org@claude-code-best.win>
1 parent 3d7b32f commit 78d46aa

3 files changed

Lines changed: 25 additions & 17 deletions

File tree

src/cli/print.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -377,9 +377,6 @@ const cronJitterConfigModule =
377377
require('../utils/cronJitterConfig.js') as typeof import('../utils/cronJitterConfig.js')
378378
const cronGate =
379379
require('@claude-code-best/builtin-tools/tools/ScheduleCronTool/prompt.js') as typeof import('@claude-code-best/builtin-tools/tools/ScheduleCronTool/prompt.js')
380-
const extractMemoriesModule = feature('EXTRACT_MEMORIES')
381-
? (require('../services/extractMemories/extractMemories.js') as typeof import('../services/extractMemories/extractMemories.js'))
382-
: null
383380
/* eslint-enable @typescript-eslint/no-require-imports */
384381

385382
const SHUTDOWN_TEAM_PROMPT = `<system-reminder>
@@ -985,7 +982,14 @@ export async function runHeadless(
985982
// the forked agent mid-flight. Gated by isExtractModeActive so the
986983
// tengu_slate_thimble flag controls non-interactive extraction end-to-end.
987984
if (feature('EXTRACT_MEMORIES') && isExtractModeActive()) {
988-
await extractMemoriesModule!.drainPendingExtraction()
985+
try {
986+
const { drainPendingExtraction } = await import(
987+
'../services/extractMemories/extractMemories.js'
988+
)
989+
await drainPendingExtraction()
990+
} catch {
991+
// Module load failure — non-critical at shutdown
992+
}
989993
}
990994

991995
gracefulShutdownSync(

src/query/stopHooks.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,6 @@ import { getTaskListId, listTasks } from '../utils/tasks.js'
3939
import { getAgentName, getTeamName, isTeammate } from '../utils/teammate.js'
4040

4141
/* eslint-disable @typescript-eslint/no-require-imports */
42-
const extractMemoriesModule = feature('EXTRACT_MEMORIES')
43-
? (require('../services/extractMemories/extractMemories.js') as typeof import('../services/extractMemories/extractMemories.js'))
44-
: null
4542
const jobClassifierModule = feature('TEMPLATES')
4643
? (require('../jobs/classifier.js') as typeof import('../jobs/classifier.js'))
4744
: null
@@ -154,12 +151,16 @@ export async function* handleStopHooks(
154151
// Fire-and-forget in both interactive and non-interactive. For -p/SDK,
155152
// print.ts drains the in-flight promise after flushing the response
156153
// but before gracefulShutdownSync (see drainPendingExtraction).
157-
void extractMemoriesModule!.executeExtractMemories(
158-
stopHookContext,
159-
toolUseContext.appendSystemMessage as
160-
| ((msg: import('../types/message.js').SystemMessage) => void)
161-
| undefined,
162-
)
154+
void import('../services/extractMemories/extractMemories.js')
155+
.then(({ executeExtractMemories }) =>
156+
executeExtractMemories(
157+
stopHookContext,
158+
toolUseContext.appendSystemMessage as
159+
| ((msg: import('../types/message.js').SystemMessage) => void)
160+
| undefined,
161+
),
162+
)
163+
.catch(() => {})
163164
}
164165
if (!toolUseContext.agentId && !poorMode) {
165166
void executeAutoDream(stopHookContext, toolUseContext.appendSystemMessage)

src/utils/backgroundHousekeeping.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ import { initMagicDocs } from '../services/MagicDocs/magicDocs.js'
44
import { initSkillImprovement } from './hooks/skillImprovement.js'
55

66
/* eslint-disable @typescript-eslint/no-require-imports */
7-
const extractMemoriesModule = feature('EXTRACT_MEMORIES')
8-
? (require('../services/extractMemories/extractMemories.js') as typeof import('../services/extractMemories/extractMemories.js'))
9-
: null
107
const registerProtocolModule = feature('LODESTONE')
118
? (require('./deepLink/registerProtocol.js') as typeof import('./deepLink/registerProtocol.js'))
129
: null
@@ -32,7 +29,13 @@ export function startBackgroundHousekeeping(): void {
3229
void initMagicDocs()
3330
void initSkillImprovement()
3431
if (feature('EXTRACT_MEMORIES')) {
35-
extractMemoriesModule!.initExtractMemories()
32+
void import('../services/extractMemories/extractMemories.js')
33+
.then(({ initExtractMemories }) => {
34+
initExtractMemories()
35+
})
36+
.catch(() => {
37+
// Module load failure — non-critical, memory extraction just won't run
38+
})
3639
}
3740
initAutoDream()
3841
void autoUpdateMarketplacesAndPluginsInBackground()

0 commit comments

Comments
 (0)