Преглед на файлове

fix (1.34.6 -> 1.34.7): 修复日志序列化中的循环引用问题,避免出现类似于 [error] 渲染进程崩溃 [object Object] 的情况,打印不出来详细错误信息

- 在 main.js 中添加 safeStringify 函数,避免 JSON.stringify 处理循环引用时出错
- 在 render-process-gone 和 child-process-gone 事件中替换 JSON.stringify 为 safeStringify

改动文件:
- main.js
dengdx преди 2 седмици
родител
ревизия
e5bfe00ab9
променени са 3 файла, в които са добавени 32 реда и са изтрити 3 реда
  1. 15 0
      CHANGELOG.md
  2. 16 2
      main.js
  3. 1 1
      package.json

+ 15 - 0
CHANGELOG.md

@@ -2,6 +2,21 @@
 
 本项目的所有重要变更都将记录在此文件中。
 
+## [1.34.7] - 2025-12-30 16:20
+
+### 修复 (Fixed)
+- **修复日志序列化中的循环引用问题** - 在 main.js 中添加 safeStringify 函数,避免 JSON.stringify 处理循环引用时出错
+  - 在 render-process-gone 和 child-process-gone 事件中替换 JSON.stringify 为 safeStringify
+  - 确保日志记录时不会因循环引用导致序列化失败
+
+**核心改进:**
+- 错误处理优化:添加循环引用检测和处理逻辑
+- 系统稳定性:防止因对象循环引用导致的日志序列化错误
+- 调试能力:确保所有错误信息都能正确记录和显示
+
+**改动文件:**
+- main.js
+
 ## [1.34.6] - 2025-12-30 15:58
 
 ### 修复 (Fixed)

+ 16 - 2
main.js

@@ -10,6 +10,20 @@ import { writeFileSync } from 'fs';
 import fs from 'fs';
 import path from 'path';
 
+// 导入 safeStringify 函数来处理对象序列化
+function safeStringify(obj) {
+  const cache = new Set();
+  return JSON.stringify(obj, (key, value) => {
+    if (typeof value === 'object' && value !== null) {
+      if (cache.has(value)) {
+        return '[Circular]';
+      }
+      cache.add(value);
+    }
+    return value;
+  });
+}
+
 // -------------- 全局错误处理 --------------
 process.on('uncaughtException', (error) => {
   writeLog('fatal', `未捕获的异常: ${error.message}\n${error.stack}`);
@@ -25,11 +39,11 @@ process.on('unhandledRejection', (reason, promise) => {
 
 // 监听应用崩溃
 app.on('render-process-gone', (event, webContents, details) => {
-  writeLog('fatal', `渲染进程崩溃: ${JSON.stringify(details)}`);
+  writeLog('fatal', `渲染进程崩溃: ${safeStringify(details)}`);
 });
 
 app.on('child-process-gone', (event, childProcess, details) => {
-  writeLog('error', `子进程崩溃: ${JSON.stringify(details)}`);
+  writeLog('error', `子进程崩溃: ${safeStringify(details)}`);
 });
 
 // -------------- 构造 ESM 版 __dirname --------------

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "zsis",
-  "version": "1.34.6",
+  "version": "1.34.7",
   "private": true,
   "description": "医学成像系统",
   "main": "main.js",