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

This commit is contained in:
CaIon
2025-10-05 18:38:25 +08:00
parent 4675ea5020
commit d76ee92f7d
2 changed files with 10 additions and 17 deletions

View File

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

View File

@@ -1,22 +1,11 @@
const { contextBridge } = require('electron'); const { contextBridge } = require('electron');
// 获取数据目录路径(用于显示给用户) // 获取数据目录路径(用于显示给用户)
// 使用字符串拼接而不是 path.join 避免模块依赖问题 // 优先使用主进程设置的真实路径,如果没有则回退到手动拼接
function getDataDirPath() { function getDataDirPath() {
const platform = process.platform; // 如果主进程已设置真实路径,直接使用
const homeDir = process.env.HOME || process.env.USERPROFILE || ''; if (process.env.ELECTRON_DATA_DIR) {
return process.env.ELECTRON_DATA_DIR;
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`;
} }
} }