|
@@ -1,16 +1,31 @@
|
|
|
-import { fileURLToPath } from 'url';
|
|
|
import path from 'path';
|
|
|
import fs from 'fs';
|
|
|
+import { fileURLToPath } from 'url';
|
|
|
+import { createRequire } from 'module';
|
|
|
+const require = createRequire(import.meta.url);
|
|
|
+
|
|
|
+const { app } = require('electron');
|
|
|
+
|
|
|
+const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
+
|
|
|
+/* --------------- 环境检测 --------------- */
|
|
|
+const IS_PKG = process.pkg !== undefined;
|
|
|
+const IS_ELECTRON = process.versions && process.versions.electron;
|
|
|
|
|
|
-// ① 兼容 pkg:__dirname 会被重写成 /snapshot/...,需要 process.execPath
|
|
|
-const IS_PKG = process.pkg !== undefined;
|
|
|
-const EXE_DIR = IS_PKG
|
|
|
- ? path.dirname(process.execPath) // pkg 运行时
|
|
|
- : path.dirname(process.argv[1]); // 普通 node 启动
|
|
|
+/* --------------- 计算「可写」根目录 --------------- */
|
|
|
+let baseDir;
|
|
|
+if (IS_PKG) {
|
|
|
+ baseDir = path.dirname(process.execPath);
|
|
|
+} else if (IS_ELECTRON) {
|
|
|
+ // Electron 打包后:exe 旁边
|
|
|
+ baseDir = path.dirname(app.getPath('exe'));
|
|
|
+} else {
|
|
|
+ // 开发阶段:项目根
|
|
|
+ baseDir = path.resolve(__dirname, '../..');
|
|
|
+}
|
|
|
|
|
|
-export const LOG_DIR = path.join(EXE_DIR, 'logs');
|
|
|
+export const LOG_DIR = path.join(baseDir, 'logs');
|
|
|
|
|
|
-/* 确保目录存在 */
|
|
|
if (!fs.existsSync(LOG_DIR)) {
|
|
|
fs.mkdirSync(LOG_DIR, { recursive: true });
|
|
|
}
|