build(tauri): 更新后端端口并优化打包流程

- 将后端端口从8000 修改为 8483
- 更新前端请求基础 URL 以匹配新的后端端口
- 优化后端打包脚本,确保 .env 文件正确复制和清理
- 修改后端主程序和请求工具中的端口配置
This commit is contained in:
JefferyHcool
2025-06-20 09:35:34 +08:00
parent 29372bab6b
commit c24fcc6d7d
8 changed files with 62 additions and 25 deletions

View File

@@ -1,11 +1,11 @@
# 通用端口配置 # 通用端口配置
BACKEND_PORT=8000 BACKEND_PORT=8483 # 后端端口
FRONTEND_PORT=3015 FRONTEND_PORT=3015
BACKEND_HOST=0.0.0.0 # 默认为 0.0.0.0,表示监听所有 IP 地址 不建议动 BACKEND_HOST=0.0.0.0 # 默认为 0.0.0.0,表示监听所有 IP 地址 不建议动
APP_PORT= 3015 # docker 部署时用 APP_PORT= 3015 # docker 部署时用
# 前端访问后端用(生产环境建议写公网或宿主机 IP # 前端访问后端用 (开发环境使用)
VITE_API_BASE_URL=http://127.0.0.1:8000 VITE_API_BASE_URL=http://127.0.0.1:8483
VITE_SCREENSHOT_BASE_URL=http://127.0.0.1:8000/static/screenshots VITE_SCREENSHOT_BASE_URL=http://127.0.0.1:8483/static/screenshots
VITE_FRONTEND_PORT=3015 VITE_FRONTEND_PORT=3015
# 生产环境配置 # 生产环境配置
ENV=production ENV=production

View File

@@ -0,0 +1,2 @@
VITE_API_BASE_URL=http://127.0.0.1:8483/api
VITE_PLATFORM=tauri

View File

@@ -7,7 +7,7 @@
"frontendDist": "../dist", "frontendDist": "../dist",
"devUrl": "http://localhost:3015", "devUrl": "http://localhost:3015",
"beforeDevCommand": "pnpm dev", "beforeDevCommand": "pnpm dev",
"beforeBuildCommand": "pnpm build" "beforeBuildCommand": "pnpm build --mode tauri "
}, },
"app": { "app": {
"windows": [ "windows": [

View File

@@ -11,10 +11,11 @@ export interface IResponse<T = any> {
// 模拟一个消息提示函数 (实际项目中会使用UI库的组件如 Ant Design 的 message 或 Element UI 的 ElMessage) // 模拟一个消息提示函数 (实际项目中会使用UI库的组件如 Ant Design 的 message 或 Element UI 的 ElMessage)
// This function simulates a message display (in real projects, you'd use a UI library's component) // This function simulates a message display (in real projects, you'd use a UI library's component)
const baseURL = import.meta.env.VITE_API_BASE_URL;
// 创建实例 // 创建实例
const request: AxiosInstance = axios.create({ const request: AxiosInstance = axios.create({
baseURL: '/api', // 请确保你的开发服务器代理设置正确 baseURL: baseURL || '/api',
timeout: 10000, timeout: 10000,
}); });

View File

@@ -44,7 +44,7 @@ load_dotenv()
# 后端 API 地址与端口(若有需要可以在代码其他部分使用 BACKEND_BASE_URL # 后端 API 地址与端口(若有需要可以在代码其他部分使用 BACKEND_BASE_URL
API_BASE_URL = os.getenv("API_BASE_URL", "http://localhost") API_BASE_URL = os.getenv("API_BASE_URL", "http://localhost")
BACKEND_PORT = os.getenv("BACKEND_PORT", "8000") BACKEND_PORT = os.getenv("BACKEND_PORT", "8483")
BACKEND_BASE_URL = f"{API_BASE_URL}:{BACKEND_PORT}" BACKEND_BASE_URL = f"{API_BASE_URL}:{BACKEND_PORT}"
# 输出目录用于缓存音频、转写、Markdown 文件,以及存储截图) # 输出目录用于缓存音频、转写、Markdown 文件,以及存储截图)

View File

@@ -7,23 +7,31 @@ echo 当前工作目录:%cd%
REM 清理旧的构建 REM 清理旧的构建
echo 清理旧的构建... echo 清理旧的构建...
rmdir /s /q backend\dist 2>nul if exist backend\dist rmdir /s /q backend\dist
rmdir /s /q backend\build 2>nul if exist backend\build rmdir /s /q backend\build
rmdir /s /q BillNote_frontend\src-tauri\bin 2>nul if exist BillNote_frontend\src-tauri\bin rmdir /s /q BillNote_frontend\src-tauri\bin
mkdir BillNote_frontend\src-tauri\bin\BiliNoteBackend
echo 清理完成。 echo 清理完成。
REM 重新创建 Tauri 需要的目录结构
mkdir BillNote_frontend\src-tauri\bin
REM 获取 Rust 的 target triple适配 Tauri 对应平台) REM 获取 Rust 的 target triple适配 Tauri 对应平台)
for /f "tokens=2 delims=:" %%A in ('rustc -Vv ^| findstr "host"') do ( for /f "tokens=2 delims=:" %%A in ('rustc -Vv ^| findstr "host"') do (
set "TARGET_TRIPLE=%%A" set "TARGET_TRIPLE=%%A"
) )
set "TARGET_TRIPLE=%TARGET_TRIPLE: =%" REM 去除多余空格 set "TARGET_TRIPLE=%TARGET_TRIPLE: =%"
echo Detected target triple: %TARGET_TRIPLE% echo Detected target triple: %TARGET_TRIPLE%
REM 执行 PyInstaller 打包
REM --- 核心修改部分开始 ---
REM 步骤 1: 为了避免 PyInstaller 的解析歧义,我们先手动复制文件
echo 为打包准备 .env 文件...
copy .env.example backend/.env
REM 步骤 2: 执行 PyInstaller 打包,直接添加已存在的 .env 文件
echo 开始 PyInstaller 打包... echo 开始 PyInstaller 打包...
pyinstaller ^ pyinstaller ^
--clean ^
-y ^ -y ^
--name BiliNoteBackend ^ --name BiliNoteBackend ^
--paths backend ^ --paths backend ^
@@ -33,15 +41,23 @@ pyinstaller ^
--hidden-import uvicorn ^ --hidden-import uvicorn ^
--hidden-import fastapi ^ --hidden-import fastapi ^
--hidden-import starlette ^ --hidden-import starlette ^
--add-data "app/db/builtin_providers.json;." ^ --add-data "app\db\builtin_providers.json;." ^
--add-data "..\.env.example;.env" ^ --add-data ".env;." ^
backend\main.py backend\main.py
REM 步骤 3: 清理在项目根目录创建的临时 .env 文件
echo 清理临时的 .env 文件...
del backend/.env
REM --- 核心修改部分结束 ---
REM 重命名生成的可执行文件为符合 Tauri 要求的名称 REM 重命名生成的可执行文件为符合 Tauri 要求的名称
move /Y BillNote_frontend\src-tauri\bin\BiliNoteBackend\BiliNoteBackend.exe BillNote_frontend\src-tauri\bin\BiliNoteBackend\BiliNoteBackend-%TARGET_TRIPLE%.exe move /Y BillNote_frontend\src-tauri\bin\BiliNoteBackend\BiliNoteBackend.exe BillNote_frontend\src-tauri\bin\BiliNoteBackend\BiliNoteBackend-%TARGET_TRIPLE%.exe
echo PyInstaller 打包完成: echo PyInstaller 打包完成:
dir BillNote_frontend\src-tauri\bin\BiliNoteBackend dir BillNote_frontend\src-tauri\bin\BiliNoteBackend
echo 请检查 BillNote_frontend\src-tauri\bin\BiliNoteBackend 目录,确认打包内容 echo 请检查 BillNote_frontend\src-tauri\bin\BiliNoteBackend 目录,确认其中包含了名为 .env 的【文件】
endlocal endlocal

View File

@@ -16,7 +16,13 @@ echo "清理完成。"
TARGET_TRIPLE=$(rustc -Vv | grep host | cut -f2 -d' ') TARGET_TRIPLE=$(rustc -Vv | grep host | cut -f2 -d' ')
echo "Detected target triple: $TARGET_TRIPLE" echo "Detected target triple: $TARGET_TRIPLE"
# PyInstaller onedir 模式,直接输出到 Tauri 的 bin 目录 # --- 核心修改部分开始 ---
# 步骤 1: 为了避免 PyInstaller 的解析歧义,我们先手动复制文件
echo "为打包准备 .env 文件..."
cp .env.example backend/.env
# 步骤 2: PyInstaller 打包,直接添加已存在的 .env 文件
echo "开始 PyInstaller 打包..." echo "开始 PyInstaller 打包..."
pyinstaller \ pyinstaller \
--name BiliNoteBackend \ --name BiliNoteBackend \
@@ -27,13 +33,25 @@ pyinstaller \
--hidden-import uvicorn \ --hidden-import uvicorn \
--hidden-import fastapi \ --hidden-import fastapi \
--hidden-import starlette \ --hidden-import starlette \
--add-data "app/db/builtin_providers.json:."\ --add-data "app/db/builtin_providers.json:." \
--add-data "../.env.example:.env" \ --add-data ".env:." \
"$(pwd)/backend/main.py" # 确保这里没有额外的空格,并使用绝对路径 "$(pwd)/backend/main.py"
# 步骤 3: 清理在项目根目录创建的临时 .env 文件
echo "清理临时的 .env 文件..."
rm backend/.env
# --- 核心修改部分结束 ---
# 重命名主执行文件以包含目标平台信息
mv \ mv \
./BillNote_frontend/src-tauri/bin/BiliNoteBackend/BiliNoteBackend\ ./BillNote_frontend/src-tauri/bin/BiliNoteBackend/BiliNoteBackend\
./BillNote_frontend/src-tauri/bin/BiliNoteBackend/BiliNoteBackend-$TARGET_TRIPLE ./BillNote_frontend/src-tauri/bin/BiliNoteBackend/BiliNoteBackend-$TARGET_TRIPLE
echo "PyInstaller 打包完成" echo "PyInstaller 打包完成"
ls -l ./BillNote_frontend/src-tauri/bin/BiliNoteBackend # 这里会列出 onedir 模式下的目录内容 echo "打包后的目录内容"
echo "请检查 src-tauri/bin/BiliNoteBackend 目录,以确认打包内容。" ls -l ./BillNote_frontend/src-tauri/bin/BiliNoteBackend
echo "请检查 src-tauri/bin/BiliNoteBackend 目录,确认其中包含了名为 .env 的【文件】。"

View File

@@ -66,7 +66,7 @@ app.mount("/uploads", StaticFiles(directory=uploads_dir), name="uploads")
if __name__ == "__main__": if __name__ == "__main__":
port = int(os.getenv("BACKEND_PORT", 8000)) port = int(os.getenv("BACKEND_PORT", 8483))
host = os.getenv("BACKEND_HOST", "0.0.0.0") host = os.getenv("BACKEND_HOST", "0.0.0.0")
logger.info(f"Starting server on {host}:{port}") logger.info(f"Starting server on {host}:{port}")
uvicorn.run(app, host=host, port=port, reload=False) uvicorn.run(app, host=host, port=port, reload=False)