修复 Electron 应用窗口不显示的问题

- 修正 Electron 依赖版本为 28.0.0(解决安装问题)
- 更新 package.json 中的启动脚本,改进并发命令执行
- 修正主进程入口文件路径配置
- 调整 TypeScript 编译配置的根目录设置
- 添加 Windows 开发环境启动脚本 start-dev.bat
- 更新 .gitignore 排除编译产物和锁文件

问题原因:pnpm 默认阻止了 Electron 安装脚本执行,导致应用无法正常启动
This commit is contained in:
farion1231
2025-08-05 09:51:21 +08:00
parent e0a9c1ab4c
commit 35cb750d19
5 changed files with 34 additions and 7 deletions

5
.gitignore vendored
View File

@@ -4,4 +4,7 @@ release/
.DS_Store .DS_Store
*.log *.log
.env .env
.env.local .env.local
*.tsbuildinfo
.npmrc
pnpm-lock.yaml

View File

@@ -2,10 +2,12 @@
"name": "cc-switch", "name": "cc-switch",
"version": "1.0.0", "version": "1.0.0",
"description": "Claude Code 供应商切换工具", "description": "Claude Code 供应商切换工具",
"main": "dist/main.js", "main": "dist/main/index.js",
"scripts": { "scripts": {
"dev": "concurrently \"npm run dev:main\" \"npm run dev:renderer\"", "dev": "concurrently -k \"npm:dev:renderer\" \"npm:dev:electron:watch\"",
"dev:main": "tsc -w -p tsconfig.main.json", "dev:electron": "tsc -p tsconfig.main.json && electron .",
"dev:electron:watch": "tsc -p tsconfig.main.json && concurrently -k \"tsc -w -p tsconfig.main.json\" \"npm:electron\"",
"electron": "electron .",
"dev:renderer": "vite", "dev:renderer": "vite",
"build": "npm run build:renderer && npm run build:main", "build": "npm run build:renderer && npm run build:main",
"build:main": "tsc -p tsconfig.main.json", "build:main": "tsc -p tsconfig.main.json",
@@ -22,7 +24,7 @@
"@types/react-dom": "^18.2.0", "@types/react-dom": "^18.2.0",
"@vitejs/plugin-react": "^4.2.0", "@vitejs/plugin-react": "^4.2.0",
"concurrently": "^8.2.0", "concurrently": "^8.2.0",
"electron": "^28.0.0", "electron": "28.0.0",
"electron-builder": "^24.0.0", "electron-builder": "^24.0.0",
"typescript": "^5.3.0", "typescript": "^5.3.0",
"vite": "^5.0.0" "vite": "^5.0.0"

View File

@@ -13,7 +13,7 @@ function createWindow() {
width: 800, width: 800,
height: 600, height: 600,
webPreferences: { webPreferences: {
preload: path.join(__dirname, 'preload.js'), preload: path.join(__dirname, '../main/preload.js'),
contextIsolation: true, contextIsolation: true,
nodeIntegration: false nodeIntegration: false
}, },
@@ -72,6 +72,13 @@ ipcMain.handle('deleteProvider', (_, id: string) => {
return true return true
}) })
ipcMain.handle('updateProvider', (_, provider: Provider) => {
const providers = store.get('providers', {})
providers[provider.id] = provider
store.set('providers', providers)
return true
})
ipcMain.handle('checkStatus', async (_, provider: Provider) => { ipcMain.handle('checkStatus', async (_, provider: Provider) => {
return await checkProviderStatus(provider) return await checkProviderStatus(provider)
}) })

15
start-dev.bat Normal file
View File

@@ -0,0 +1,15 @@
@echo off
echo Starting CC Switch Development Server...
echo.
echo [1/2] Starting Vite dev server...
start /B cmd /c "pnpm run dev:renderer"
echo [2/2] Waiting for Vite to start...
timeout /t 5 /nobreak > nul
echo Starting Electron...
pnpm run dev:electron
echo.
echo Development server started!

View File

@@ -2,7 +2,7 @@
"extends": "./tsconfig.node.json", "extends": "./tsconfig.node.json",
"compilerOptions": { "compilerOptions": {
"outDir": "dist", "outDir": "dist",
"rootDir": "src/main", "rootDir": "src",
"types": ["node"] "types": ["node"]
}, },
"include": ["src/main/**/*", "src/shared/**/*"] "include": ["src/main/**/*", "src/shared/**/*"]