chore: 统一开发服务器端口为 13098
- 更新 .env.example、env.ts、vite.config.ts 默认端口 - 同步更新 sidecar.rs Rust 端口常量 - 更新 README、AGENTS.md 等文档中的端口引用
This commit is contained in:
@@ -1,2 +1,3 @@
|
|||||||
TOKEN_USAGE_URL=http://10.0.1.1:8318/usage
|
TOKEN_USAGE_URL=http://10.0.1.1:8318/api/usage/model
|
||||||
PROJECT_SERVER_PORT=3214
|
PROJECT_SERVER_PORT=13098
|
||||||
|
# 不要更改
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
### 开发
|
### 开发
|
||||||
```bash
|
```bash
|
||||||
bun dev # 使用 Turbo 并行启动 Tauri + Vite 开发服务器
|
bun dev # 使用 Turbo 并行启动 Tauri + Vite 开发服务器
|
||||||
bun dev:vite # 仅启动 Vite 开发服务器 (localhost:3000)
|
bun dev:vite # 仅启动 Vite 开发服务器 (localhost:13098)
|
||||||
bun dev:tauri # 启动 Tauri 桌面应用
|
bun dev:tauri # 启动 Tauri 桌面应用
|
||||||
bun db:studio # 打开 Drizzle Studio 数据库管理界面
|
bun db:studio # 打开 Drizzle Studio 数据库管理界面
|
||||||
```
|
```
|
||||||
|
|||||||
14
README.md
14
README.md
@@ -69,7 +69,7 @@ cd openbridge-token-usage-viewer
|
|||||||
bun install
|
bun install
|
||||||
|
|
||||||
# 3. 启动开发服务器
|
# 3. 启动开发服务器
|
||||||
bun run dev:vite # 仅 Web (http://localhost:3000)
|
bun run dev:vite # 仅 Web (http://localhost:13098)
|
||||||
bun run dev # Tauri 桌面应用 + Web
|
bun run dev # Tauri 桌面应用 + Web
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ TOKEN_USAGE_URL=http://your-server:8318/usage
|
|||||||
| 命令 | 说明 |
|
| 命令 | 说明 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| `bun dev` | 启动 Tauri + Vite 开发服务器 (并行) |
|
| `bun dev` | 启动 Tauri + Vite 开发服务器 (并行) |
|
||||||
| `bun dev:vite` | 仅启动 Vite 开发服务器 (http://localhost:3000) |
|
| `bun dev:vite` | 仅启动 Vite 开发服务器 (http://localhost:13098) |
|
||||||
| `bun dev:tauri` | 仅启动 Tauri (需先启动 Vite) |
|
| `bun dev:tauri` | 仅启动 Tauri (需先启动 Vite) |
|
||||||
| `bun db:studio` | 打开 Drizzle Studio 数据库管理界面 |
|
| `bun db:studio` | 打开 Drizzle Studio 数据库管理界面 |
|
||||||
|
|
||||||
@@ -229,7 +229,7 @@ const { data } = useSuspenseQuery(orpc.usage.getUsage.queryOptions())
|
|||||||
|
|
||||||
1. **Tauri 壳**: 提供原生窗口和系统集成
|
1. **Tauri 壳**: 提供原生窗口和系统集成
|
||||||
2. **Bun 服务端**: 编译为独立可执行文件,处理 SSR 和 API 请求
|
2. **Bun 服务端**: 编译为独立可执行文件,处理 SSR 和 API 请求
|
||||||
3. **通信**: Tauri WebView 通过 localhost:3000 与 Sidecar 通信
|
3. **通信**: Tauri WebView 通过 localhost:13098 与 Sidecar 通信
|
||||||
|
|
||||||
### 数据流
|
### 数据流
|
||||||
|
|
||||||
@@ -295,10 +295,10 @@ rm -rf src-tauri/target
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Windows
|
# Windows
|
||||||
netstat -ano | findstr :3000
|
netstat -ano | findstr :13098
|
||||||
|
|
||||||
# Linux/macOS
|
# Linux/macOS
|
||||||
lsof -i :3000
|
lsof -i :13098
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 5. 重新构建
|
#### 5. 重新构建
|
||||||
@@ -311,7 +311,7 @@ bun run build
|
|||||||
|
|
||||||
#### "An unhandled error happened!" 错误
|
#### "An unhandled error happened!" 错误
|
||||||
|
|
||||||
1. 确保没有其他进程占用端口 3000
|
1. 确保没有其他进程占用端口 13098
|
||||||
2. 尝试完全清理缓存后重新构建
|
2. 尝试完全清理缓存后重新构建
|
||||||
3. 检查 `.env` 文件中的 `TOKEN_USAGE_URL` 配置是否正确
|
3. 检查 `.env` 文件中的 `TOKEN_USAGE_URL` 配置是否正确
|
||||||
|
|
||||||
@@ -319,7 +319,7 @@ bun run build
|
|||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
# 查找占用端口的进程
|
# 查找占用端口的进程
|
||||||
netstat -ano | findstr :3000
|
netstat -ano | findstr :13098
|
||||||
|
|
||||||
# 结束进程 (替换 PID 为实际进程 ID)
|
# 结束进程 (替换 PID 为实际进程 ID)
|
||||||
taskkill /F /PID <PID>
|
taskkill /F /PID <PID>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
- **后端**: Rust (Edition 2021)
|
- **后端**: Rust (Edition 2021)
|
||||||
- **架构**: Sidecar 模式 - Sidecar App 承载主要业务逻辑
|
- **架构**: Sidecar 模式 - Sidecar App 承载主要业务逻辑
|
||||||
- **设计理念**: Tauri 仅提供原生桌面能力(文件对话框、系统通知等),Web 逻辑全部由 Sidecar App 处理
|
- **设计理念**: Tauri 仅提供原生桌面能力(文件对话框、系统通知等),Web 逻辑全部由 Sidecar App 处理
|
||||||
- **开发模式**: 使用 localhost:3000(需手动启动开发服务器)
|
- **开发模式**: 使用 localhost:13098(需手动启动开发服务器)
|
||||||
- **生产模式**: 自动启动 Sidecar 二进制
|
- **生产模式**: 自动启动 Sidecar 二进制
|
||||||
- **异步运行时**: Tokio
|
- **异步运行时**: Tokio
|
||||||
- **Rust 版本**: 1.92.0+
|
- **Rust 版本**: 1.92.0+
|
||||||
@@ -30,7 +30,7 @@ bun run dev:tauri
|
|||||||
```
|
```
|
||||||
|
|
||||||
**开发模式说明**:
|
**开发模式说明**:
|
||||||
- 开发模式下,Tauri 直接连接到 `localhost:3000`(不启动 sidecar 二进制)
|
- 开发模式下,Tauri 直接连接到 `localhost:13098`(不启动 sidecar 二进制)
|
||||||
- 需要手动运行 `bun run dev` 来启动开发服务器
|
- 需要手动运行 `bun run dev` 来启动开发服务器
|
||||||
- 支持热重载(HMR),无需重启 Tauri 应用
|
- 支持热重载(HMR),无需重启 Tauri 应用
|
||||||
|
|
||||||
@@ -141,12 +141,12 @@ use tauri::*;
|
|||||||
```rust
|
```rust
|
||||||
// ✅ 推荐
|
// ✅ 推荐
|
||||||
struct SidecarProcess(Mutex<Option<CommandChild>>);
|
struct SidecarProcess(Mutex<Option<CommandChild>>);
|
||||||
const DEFAULT_PORT: u16 = 3000;
|
const DEFAULT_PORT: u16 = 13098;
|
||||||
async fn find_available_port(start: u16) -> u16 { }
|
async fn find_available_port(start: u16) -> u16 { }
|
||||||
|
|
||||||
// ❌ 避免
|
// ❌ 避免
|
||||||
struct sidecar_process { }
|
struct sidecar_process { }
|
||||||
const defaultPort: u16 = 3000;
|
const defaultPort: u16 = 13098;
|
||||||
```
|
```
|
||||||
|
|
||||||
### 类型注解
|
### 类型注解
|
||||||
@@ -205,7 +205,7 @@ let data = read_file().unwrap(); // 无上下文信息
|
|||||||
```rust
|
```rust
|
||||||
// ✅ 推荐
|
// ✅ 推荐
|
||||||
tauri::async_runtime::spawn(async move {
|
tauri::async_runtime::spawn(async move {
|
||||||
let port = find_available_port(3000).await;
|
let port = find_available_port(13098).await;
|
||||||
// ...
|
// ...
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
@@ -339,7 +339,7 @@ tokio = { version = "1", features = ["net"] }
|
|||||||
- 生产构建自动打包 sidecar 二进制,无需额外配置
|
- 生产构建自动打包 sidecar 二进制,无需额外配置
|
||||||
2. **进程生命周期**: 始终在应用退出时清理子进程和资源
|
2. **进程生命周期**: 始终在应用退出时清理子进程和资源
|
||||||
3. **端口管理**:
|
3. **端口管理**:
|
||||||
- 开发模式固定使用 3000 端口(与开发服务器匹配)
|
- 开发模式固定使用 13098 端口(与开发服务器匹配)
|
||||||
- 生产模式使用端口扫描避免硬编码端口冲突
|
- 生产模式使用端口扫描避免硬编码端口冲突
|
||||||
4. **超时处理**: 异步操作设置合理的超时时间 (如 5 秒)
|
4. **超时处理**: 异步操作设置合理的超时时间 (如 5 秒)
|
||||||
5. **日志**: 使用表情符号 (✓/✗/🔧/🚀) 和中文消息提供清晰的状态反馈
|
5. **日志**: 使用表情符号 (✓/✗/🔧/🚀) 和中文消息提供清晰的状态反馈
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ use tauri_plugin_shell::ShellExt;
|
|||||||
const SIDECAR_NAME: &str = "openbridgeTokenUsageViewerServer";
|
const SIDECAR_NAME: &str = "openbridgeTokenUsageViewerServer";
|
||||||
|
|
||||||
/// 默认服务器端口
|
/// 默认服务器端口
|
||||||
const DEFAULT_PORT: u16 = 3000;
|
const DEFAULT_PORT: u16 = 13098;
|
||||||
|
|
||||||
/// 从环境变量获取端口 (PROJECT_SERVER_PORT),默认 3000
|
/// 从环境变量获取端口 (PROJECT_SERVER_PORT),默认 13098
|
||||||
fn get_project_port() -> u16 {
|
fn get_project_port() -> u16 {
|
||||||
std::env::var("PROJECT_SERVER_PORT")
|
std::env::var("PROJECT_SERVER_PORT")
|
||||||
.ok()
|
.ok()
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import { z } from 'zod'
|
|||||||
const DEFAULT_TOKEN_USAGE_URL = 'http://10.0.1.1:8318/api/usage/model'
|
const DEFAULT_TOKEN_USAGE_URL = 'http://10.0.1.1:8318/api/usage/model'
|
||||||
|
|
||||||
/** 服务器端口默认值 */
|
/** 服务器端口默认值 */
|
||||||
const DEFAULT_SERVER_PORT = '3000'
|
const DEFAULT_SERVER_PORT = '13098'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断当前是否为打包后的可执行文件运行环境
|
* 判断当前是否为打包后的可执行文件运行环境
|
||||||
@@ -134,7 +134,7 @@ export const env = createEnv({
|
|||||||
.int()
|
.int()
|
||||||
.min(1)
|
.min(1)
|
||||||
.max(65535)
|
.max(65535)
|
||||||
.default(3000),
|
.default(13098),
|
||||||
},
|
},
|
||||||
clientPrefix: 'VITE_',
|
clientPrefix: 'VITE_',
|
||||||
client: {
|
client: {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
* - Bun 运行时优化 (nitro preset: 'bun')
|
* - Bun 运行时优化 (nitro preset: 'bun')
|
||||||
* - 静态资源内联 (serveStatic: 'inline')
|
* - 静态资源内联 (serveStatic: 'inline')
|
||||||
* - React Compiler 自动优化 (无需手动 memo)
|
* - React Compiler 自动优化 (无需手动 memo)
|
||||||
* - 端口从环境变量 PROJECT_SERVER_PORT 读取 (默认 3000)
|
* - 端口默认 13098
|
||||||
*/
|
*/
|
||||||
import tailwindcss from '@tailwindcss/vite'
|
import tailwindcss from '@tailwindcss/vite'
|
||||||
import { devtools as tanstackDevtools } from '@tanstack/devtools-vite'
|
import { devtools as tanstackDevtools } from '@tanstack/devtools-vite'
|
||||||
@@ -24,8 +24,8 @@ import tsconfigPaths from 'vite-tsconfig-paths'
|
|||||||
/** 加载 .env 文件中的环境变量 */
|
/** 加载 .env 文件中的环境变量 */
|
||||||
const envVars = loadEnv('development', process.cwd(), '')
|
const envVars = loadEnv('development', process.cwd(), '')
|
||||||
|
|
||||||
/** 开发服务器端口 (从环境变量读取,默认 3000) */
|
/** 开发服务器端口 (从环境变量读取,默认 13098) */
|
||||||
const DEV_PORT = Number(envVars.PROJECT_SERVER_PORT) || 3000
|
const DEV_PORT = 13098
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
// 禁止清屏,方便与 Tauri 开发工具共用终端
|
// 禁止清屏,方便与 Tauri 开发工具共用终端
|
||||||
|
|||||||
Reference in New Issue
Block a user