Răsfoiți Sursa

feat: set data directory path in main process and update preload.js to use it

CaIon 2 luni în urmă
părinte
comite
021892b17d
2 a modificat fișierele cu 10 adăugiri și 17 ștergeri
  1. 6 2
      electron/main.js
  2. 4 15
      electron/preload.js

+ 6 - 2
electron/main.js

@@ -222,6 +222,12 @@ function checkServerAvailability(port, maxRetries = 30, retryDelay = 1000) {
 function startServer() {
   return new Promise((resolve, reject) => {
     const isDev = process.env.NODE_ENV === 'development';
+
+    const userDataPath = app.getPath('userData');
+    const dataDir = path.join(userDataPath, 'data');
+    
+    // 设置环境变量供 preload.js 使用
+    process.env.ELECTRON_DATA_DIR = dataDir;
     
     if (isDev) {
       // 开发模式:假设开发者手动启动了 Go 后端和前端开发服务器
@@ -250,8 +256,6 @@ function startServer() {
 
     // 生产模式:启动二进制服务器
     const env = { ...process.env, PORT: PORT.toString() };
-    const userDataPath = app.getPath('userData');
-    const dataDir = path.join(userDataPath, 'data');
 
     if (!fs.existsSync(dataDir)) {
       fs.mkdirSync(dataDir, { recursive: true });

+ 4 - 15
electron/preload.js

@@ -1,22 +1,11 @@
 const { contextBridge } = require('electron');
 
 // 获取数据目录路径(用于显示给用户)
-// 使用字符串拼接而不是 path.join 避免模块依赖问题
+// 优先使用主进程设置的真实路径,如果没有则回退到手动拼接
 function getDataDirPath() {
-  const platform = process.platform;
-  const homeDir = process.env.HOME || process.env.USERPROFILE || '';
-  
-  switch (platform) {
-    case 'darwin':
-      return `${homeDir}/Library/Application Support/New API/data`;
-    case 'win32': {
-      const appData = process.env.APPDATA || `${homeDir}\\AppData\\Roaming`;
-      return `${appData}\\New API\\data`;
-    }
-    case 'linux':
-      return `${homeDir}/.config/New API/data`;
-    default:
-      return `${homeDir}/.new-api/data`;
+  // 如果主进程已设置真实路径,直接使用
+  if (process.env.ELECTRON_DATA_DIR) {
+    return process.env.ELECTRON_DATA_DIR;
   }
 }