update
This commit is contained in:
@@ -143,7 +143,8 @@ const initializeDatabase = async () => {
|
||||
const startServer = () => {
|
||||
// --- 会话中间件配置 ---
|
||||
const FileStore = sessionFileStore(session);
|
||||
const sessionsPath = path.join(__dirname, '..', 'sessions');
|
||||
// 修改路径以匹配 Docker volume 挂载点 /app/data
|
||||
const sessionsPath = path.join('/app/data', 'sessions');
|
||||
if (!fs.existsSync(sessionsPath)) {
|
||||
fs.mkdirSync(sessionsPath, { recursive: true });
|
||||
}
|
||||
@@ -157,9 +158,12 @@ const startServer = () => {
|
||||
secret: process.env.SESSION_SECRET as string,
|
||||
resave: false,
|
||||
saveUninitialized: false,
|
||||
proxy: true, // 信任反向代理设置的 X-Forwarded-Proto 头
|
||||
cookie: {
|
||||
httpOnly: true,
|
||||
secure: process.env.NODE_ENV === 'production'
|
||||
// secure: 'auto' in newer versions, relies on proxy: true here
|
||||
// secure: process.env.NODE_ENV === 'production', // Keep original logic, but proxy:true adjusts behavior
|
||||
secure: false, // Temporarily force secure to false for debugging proxy issues
|
||||
// maxAge: 默认会话期
|
||||
}
|
||||
});
|
||||
|
||||
@@ -250,15 +250,21 @@ export const deleteTheme = async (id: number): Promise<boolean> => {
|
||||
*/
|
||||
export const initializePresetThemes = async (db: Database, presets: Array<Omit<TerminalTheme, '_id' | 'createdAt' | 'updatedAt' | 'isSystemDefault'> & { name: string }>) => {
|
||||
console.log('[DB Init] 开始检查并初始化预设主题...');
|
||||
// 在这里添加日志,显示总共要处理多少个预设主题
|
||||
console.log(`[DB Init] 发现 ${presets.length} 个预设主题定义。`);
|
||||
const nowSeconds = Math.floor(Date.now() / 1000); // Use seconds for DB consistency
|
||||
// const db = await getDbInstance(); // Use the passed db instance
|
||||
|
||||
for (const preset of presets) {
|
||||
// 在循环开始时添加日志,显示正在处理哪个主题
|
||||
console.log(`[DB Init] 正在处理预设主题: "${preset.name}"`);
|
||||
try {
|
||||
// Check using name and theme_type
|
||||
const existing = await getDb<{ id: number }>(db, `SELECT id FROM terminal_themes WHERE name = ? AND theme_type = 'preset'`, [preset.name]);
|
||||
|
||||
if (!existing) {
|
||||
// 添加日志,表明正在插入新主题
|
||||
console.log(`[DB Init] 主题 "${preset.name}" 不存在,正在插入...`);
|
||||
// Map preset.themeData to individual columns
|
||||
const theme = preset.themeData;
|
||||
const columns = [
|
||||
@@ -284,7 +290,8 @@ export const initializePresetThemes = async (db: Database, presets: Array<Omit<T
|
||||
await runDb(db, insertSql, values);
|
||||
console.log(`[DB Init] 预设主题 "${preset.name}" 已初始化到数据库。`);
|
||||
} else {
|
||||
// console.log(`[DB Init] 预设主题 "${preset.name}" 已存在,跳过初始化。`);
|
||||
// 取消注释并添加日志,表明主题已存在
|
||||
console.log(`[DB Init] 预设主题 "${preset.name}" 已存在,跳过初始化。`);
|
||||
}
|
||||
} catch (err: any) { // Add type annotation for err
|
||||
// Remove reference to non-existent preset_key
|
||||
|
||||
@@ -13,8 +13,8 @@ server {
|
||||
|
||||
# Proxy API requests to the backend service
|
||||
location /api/ {
|
||||
rewrite ^/api(/.*)$ $1 break; # Remove /api prefix before proxying
|
||||
proxy_pass http://backend:3001; # Proxy to backend root
|
||||
# rewrite ^/api(/.*)$ $1 break; # Remove /api prefix before proxying - REMOVED to match backend routes
|
||||
proxy_pass http://backend:3001; # Proxy to backend root, backend expects /api/v1/...
|
||||
|
||||
# Standard proxy headers
|
||||
proxy_set_header Host $host;
|
||||
|
||||
@@ -255,6 +255,21 @@ export const useLayoutStore = defineStore('layout', () => {
|
||||
sidebarPanes.value = getDefaultSidebarPanes();
|
||||
}
|
||||
}
|
||||
|
||||
// --- Final Check: Ensure defaults are applied if loading failed or resulted in null ---
|
||||
if (!layoutTree.value) {
|
||||
console.warn('[Layout Store] Layout tree is still null after all loading attempts. Applying default layout.');
|
||||
layoutTree.value = getDefaultLayout();
|
||||
// Optionally save the default to localStorage now?
|
||||
// try { localStorage.setItem(LAYOUT_STORAGE_KEY, JSON.stringify(layoutTree.value)); } catch(e) {}
|
||||
}
|
||||
// Basic check for sidebarPanes structure validity before potentially applying default
|
||||
if (!sidebarPanes.value || !Array.isArray(sidebarPanes.value.left) || !Array.isArray(sidebarPanes.value.right)) {
|
||||
console.warn('[Layout Store] Sidebar panes are null or invalid after all loading attempts. Applying default sidebar panes.');
|
||||
sidebarPanes.value = getDefaultSidebarPanes();
|
||||
// Optionally save the default to localStorage now?
|
||||
// try { localStorage.setItem(SIDEBAR_STORAGE_KEY, JSON.stringify(sidebarPanes.value)); } catch(e) {}
|
||||
}
|
||||
}
|
||||
|
||||
// --- Helper for debounced persistence ---
|
||||
|
||||
Reference in New Issue
Block a user