feat: 增加端映射设置

This commit is contained in:
ViperEkura 2026-03-24 13:43:54 +08:00
parent 3af47d48cf
commit fb66af9154
5 changed files with 45 additions and 15 deletions

View File

@ -8,13 +8,6 @@
### 1. 克隆并安装后端 ### 1. 克隆并安装后端
```bash ```bash
cd Nano-Claw
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 安装依赖
pip install -e . pip install -e .
``` ```
@ -23,6 +16,10 @@ pip install -e .
创建并编辑 `config.yml`,填入你的信息: 创建并编辑 `config.yml`,填入你的信息:
```yaml ```yaml
# Port
backend_port: 3000
frontend_port: 4000
# GLM API # GLM API
api_key: your-api-key-here api_key: your-api-key-here
api_url: https://open.bigmodel.cn/api/paas/v4/chat/completions api_url: https://open.bigmodel.cn/api/paas/v4/chat/completions
@ -45,7 +42,7 @@ mysql -u root -p -e "CREATE DATABASE glm_chat CHARACTER SET utf8mb4 COLLATE utf8
### 4. 启动后端 ### 4. 启动后端
```bash ```bash
flask --app backend run --port 5000 python -m backend.run
``` ```
### 5. 启动前端 ### 5. 启动前端
@ -56,7 +53,6 @@ npm install
npm run dev npm run dev
``` ```
打开 http://localhost:3000 即可使用。
## 项目结构 ## 项目结构

View File

@ -1,6 +1,7 @@
from backend import create_app from backend import create_app, load_config
app = create_app() app = create_app()
if __name__ == "__main__": if __name__ == "__main__":
app.run(debug=True, port=5000) cfg = load_config()
app.run(debug=True, port=cfg.get("backend_port"))

View File

@ -14,6 +14,7 @@
}, },
"devDependencies": { "devDependencies": {
"@vitejs/plugin-vue": "^5.2.0", "@vitejs/plugin-vue": "^5.2.0",
"js-yaml": "^4.1.1",
"vite": "^6.0.0" "vite": "^6.0.0"
} }
}, },
@ -982,6 +983,13 @@
"integrity": "sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==", "integrity": "sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true,
"license": "Python-2.0"
},
"node_modules/csstype": { "node_modules/csstype": {
"version": "3.2.3", "version": "3.2.3",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz", "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz",
@ -1090,6 +1098,19 @@
"node": ">=12.0.0" "node": ">=12.0.0"
} }
}, },
"node_modules/js-yaml": {
"version": "4.1.1",
"resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.1.tgz",
"integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
"dev": true,
"license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
},
"bin": {
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/magic-string": { "node_modules/magic-string": {
"version": "0.30.21", "version": "0.30.21",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz", "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz",

View File

@ -9,12 +9,13 @@
"preview": "vite preview" "preview": "vite preview"
}, },
"dependencies": { "dependencies": {
"vue": "^3.4.0", "highlight.js": "^11.10.0",
"marked": "^15.0.0", "marked": "^15.0.0",
"highlight.js": "^11.10.0" "vue": "^3.4.0"
}, },
"devDependencies": { "devDependencies": {
"@vitejs/plugin-vue": "^5.2.0", "@vitejs/plugin-vue": "^5.2.0",
"js-yaml": "^4.1.1",
"vite": "^6.0.0" "vite": "^6.0.0"
} }
} }

View File

@ -1,13 +1,24 @@
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue' import vue from '@vitejs/plugin-vue'
import fs from 'fs'
import yaml from 'js-yaml'
import { fileURLToPath } from 'url'
import { dirname, resolve } from 'path'
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)
const config = yaml.load(
fs.readFileSync(resolve(__dirname, '..', 'config.yml'), 'utf-8')
)
export default defineConfig({ export default defineConfig({
plugins: [vue()], plugins: [vue()],
server: { server: {
port: 3000, port: config.frontend_port,
proxy: { proxy: {
'/api': { '/api': {
target: 'http://localhost:5000', target: `http://localhost:${config.backend_port}`,
changeOrigin: true, changeOrigin: true,
}, },
}, },