From c58a9066e5f78976ea495ea86c05af44bcdbea4a Mon Sep 17 00:00:00 2001 From: Misaka_Company Date: Fri, 17 Apr 2026 15:07:34 +0800 Subject: [PATCH] fix(cleaner): capture video reference before page close for rename page.video() may return null after page.close(), so the video reference must be captured before closing the detail page. Co-Authored-By: Claude Opus 4.6 --- src/main/services/erp/cleaner.ts | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/main/services/erp/cleaner.ts b/src/main/services/erp/cleaner.ts index 54d84de..fe85115 100644 --- a/src/main/services/erp/cleaner.ts +++ b/src/main/services/erp/cleaner.ts @@ -1278,25 +1278,24 @@ export class CleanerService { }) log.debug('[详情页面清理] 准备关闭详情页面', { pageUrl: detailPage.url() }) + // Capture video reference before closing — page.video() may return null after close + const video = this.videoDir ? detailPage.video() : null await detailPage.close() log.debug('[详情页面清理完成] 详情页已关闭') // Rename video file to order number if video recording is enabled - if (this.videoDir && expectedOrderNumber) { + if (video && expectedOrderNumber) { try { - const video = detailPage.video() - if (video) { - const originalPath = await video.path() - if (originalPath && fs.existsSync(originalPath)) { - const ext = path.extname(originalPath) || '.webm' - const orderVideoPath = path.join(this.videoDir, `${expectedOrderNumber}${ext}`) - // Avoid overwriting existing file (e.g. retry) - const finalPath = fs.existsSync(orderVideoPath) - ? path.join(this.videoDir, `${expectedOrderNumber}_${Date.now()}${ext}`) - : orderVideoPath - fs.renameSync(originalPath, finalPath) - log.debug('[视频录制] 视频已重命名', { from: originalPath, to: finalPath }) - } + const originalPath = await video.path() + if (originalPath && fs.existsSync(originalPath)) { + const ext = path.extname(originalPath) || '.webm' + const orderVideoPath = path.join(this.videoDir!, `${expectedOrderNumber}${ext}`) + // Avoid overwriting existing file (e.g. retry) + const finalPath = fs.existsSync(orderVideoPath) + ? path.join(this.videoDir!, `${expectedOrderNumber}_${Date.now()}${ext}`) + : orderVideoPath + fs.renameSync(originalPath, finalPath) + log.debug('[视频录制] 视频已重命名', { from: originalPath, to: finalPath }) } } catch (videoError) { log.warn('[视频录制] 重命名视频失败', {