Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 4 additions & 8 deletions client/.env.example
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
# Frontend optional overrides
# 大多数本地开发场景不需要这个文件。
# 如果不显式配置,开发环境默认会把 API 指到:
# http(s)://当前页面 hostname:3000/api
# 如果你通过局域网地址访问页面,不要把 API 固定成 localhost,
# 否则浏览器会去请求“当前访问设备自己的 localhost:3000”。

# 只有在你明确要固定 API 地址时才取消注释:
# VITE_API_BASE_URL=http://localhost:3000/api
# API 服务地址(包含端口),默认 http://localhost:3001/api
VITE_API_BASE_URL=http://localhost:3001/api
Comment on lines +2 to +3
# Vite 开发服务器端口
VITE_DEV_PORT=5174
# 默认 10 分钟,可按需要调大。
VITE_API_TIMEOUT_MS=600000
Comment on lines +2 to 7
7 changes: 4 additions & 3 deletions client/src/lib/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,12 @@ function trimTrailingSlash(value: string): string {

function resolveApiBaseUrl(): string {
const configuredBaseUrl = import.meta.env.VITE_API_BASE_URL?.trim();
const apiPort = import.meta.env.VITE_API_PORT?.trim() || "3001";
if (!import.meta.env.DEV || typeof window === "undefined") {
return configuredBaseUrl || "http://localhost:3000/api";
return configuredBaseUrl || `http://localhost:${apiPort}/api`;
}
Comment on lines 12 to 16

const inferredBaseUrl = `${window.location.protocol}//${window.location.hostname}:3000/api`;
const inferredBaseUrl = `${window.location.protocol}//${window.location.hostname}:${apiPort}/api`;
if (!configuredBaseUrl) {
return inferredBaseUrl;
}
Expand All @@ -26,7 +27,7 @@ function resolveApiBaseUrl(): string {
}
parsed.hostname = window.location.hostname;
if (!parsed.port) {
parsed.port = "3000";
parsed.port = import.meta.env.VITE_API_PORT?.trim() || "3001";
}
return trimTrailingSlash(parsed.toString());
} catch {
Expand Down
3 changes: 2 additions & 1 deletion client/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ export default defineConfig({
},
},
server: {
host: true, // 允许局域网访问(监听 0.0.0.0)
port: Number(process.env.VITE_DEV_PORT) || 5174,
host: true,
},
Comment on lines 65 to 68
});
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,14 @@
],
"scripts": {
"dev": "node scripts/run-with-log.cjs --name dev -- pnpm dev:raw",
"dev:raw": "concurrently \"pnpm dev:shared\" \"pnpm dev:server\" \"pnpm dev:client:wait\"",
"dev:raw": "concurrently \"pnpm dev:server\" \"pnpm dev:after-server\"",
"dev:log": "node scripts/run-with-log.cjs --name dev -- pnpm dev:raw",
"dev:shared": "pnpm --filter @ai-novel/shared dev",
"dev:server": "pnpm --filter @ai-novel/server dev",
"dev:server:log": "node scripts/run-with-log.cjs --name server -- pnpm --filter @ai-novel/server dev",
"dev:client": "pnpm --filter @ai-novel/client dev",
"dev:client:wait": "node scripts/wait-for-port.cjs --port 3000 && pnpm dev:client",
"dev:client:wait": "node scripts/wait-for-port.cjs --port 3001 && pnpm dev:client",
"dev:after-server": "node scripts/wait-for-port.cjs && concurrently \"pnpm dev:shared\" \"pnpm dev:client\"",
"db:migrate": "pnpm --filter @ai-novel/server db:migrate",
"db:restore": "pnpm --filter @ai-novel/server db:restore",
"db:seed": "pnpm --filter @ai-novel/server db:seed",
Expand Down
6 changes: 3 additions & 3 deletions scripts/wait-for-port.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ function parseArgs(argv) {
hosts: process.env.WAIT_FOR_PORT_HOSTS
? parseHosts(process.env.WAIT_FOR_PORT_HOSTS)
: [...DEFAULT_HOSTS],
port: 3000,
timeoutMs: 120000,
port: Number(process.env.SERVER_PORT) || 3001,
timeoutMs: 300000,
intervalMs: 500,
help: false,
};
Expand Down Expand Up @@ -61,7 +61,7 @@ function parseArgs(argv) {
}

function printHelp() {
console.log("Usage: node scripts/wait-for-port.cjs [--host 127.0.0.1,localhost,::1] [--port 3000] [--timeout 120000] [--interval 500]");
console.log("Usage: node scripts/wait-for-port.cjs [--host 127.0.0.1,localhost,::1] [--port 3001] [--timeout 300000] [--interval 500]");
}

function wait(ms) {
Expand Down
2 changes: 1 addition & 1 deletion server/src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ function getLanIp(): string | null {
async function bootstrap(): Promise<void> {
const ragCompatibilityReport = await initializeRagSettingsCompatibility();
const app = createApp();
const port = Number(process.env.PORT ?? 3000);
const port = Number(process.env.PORT ?? 3001);
const allowLan = parseEnvFlag(process.env.ALLOW_LAN, process.env.NODE_ENV !== "production");
const host = process.env.HOST ?? (allowLan ? "0.0.0.0" : "localhost");
Comment on lines 161 to 165
ragServices.ragWorker.start();
Expand Down