feat(scripts): start.sh 启动完成时自动展示前端 / 管理端局域网访问地址
Vite dev server 已绑定 host: '0.0.0.0' 支持局域网访问,但原来的 start.sh 只在 summary 里打印 localhost 地址,Vite 输出的多条 Network URL 被埋在日志里用户看不到。这里扩展 print_summary: - 新增 wait_and_collect_network_urls(log, timeout):等待日志出现 "Network:" 行(最多 N 秒),然后从中抽取所有 http://LAN_IP:PORT URL 并去重(排除 127.0.0.1 回环) - summary 输出最后追加「局域网访问地址」分块,分别展示前台 / 管理端 在当前机器所有网络接口上的可达地址 - 附注提示:后端 API(8085) / 媒体 (3300) 的跨设备访问需要在 前端 .env 改 baseURL 这样在同 WiFi 的手机 / 其它设备上可以直接从启动日志里拿到可用入口, 无需再去 .run/logs/frontend.log 里手动 grep。 Made-with: Cursor
This commit is contained in:
@@ -117,14 +117,61 @@ start_media() {
|
||||
spawn_bg "media" "$media_dir" npm run dev
|
||||
}
|
||||
|
||||
# 等待 vite/dev server 日志里出现 Network 行并提取其中的 LAN 地址
|
||||
# 最长等待 8 秒;失败时返回空字符串(不阻塞启动流程)
|
||||
wait_and_collect_network_urls() {
|
||||
local log_file="$1"
|
||||
local max_wait="${2:-8}"
|
||||
local i=0
|
||||
while (( i < max_wait )); do
|
||||
if grep -q "Network:" "$log_file" 2>/dev/null; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
i=$((i + 1))
|
||||
done
|
||||
grep -Eo "http://[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:[0-9]+/?" "$log_file" 2>/dev/null \
|
||||
| grep -v '127\.0\.0\.1' \
|
||||
| sort -u
|
||||
}
|
||||
|
||||
print_summary() {
|
||||
printf "\n${COLOR_GREEN}=============== EchoChat 启动完成 ===============${COLOR_RESET}\n"
|
||||
printf " 前台用户端 (H5): http://localhost:5173\n"
|
||||
printf " 后台管理端: http://localhost:3100\n"
|
||||
printf " Go 后端 API: http://localhost:8085\n"
|
||||
printf " 媒体服务器 (SFU): http://localhost:3300 (healthz: /healthz)\n"
|
||||
printf " MinIO 控制台: http://localhost:9001 (echochat / echochat123456)\n\n"
|
||||
printf " 日志目录: %s\n" "$LOG_DIR"
|
||||
printf " MinIO 控制台: http://localhost:9001 (echochat / echochat123456)\n"
|
||||
|
||||
# 前端 / 管理端 Vite dev server 启动时 host=0.0.0.0,
|
||||
# 会输出多条 Network 行(本机每块网卡一条),这里从日志提取展示
|
||||
local fe_log="$LOG_DIR/frontend.log"
|
||||
local admin_log="$LOG_DIR/admin.log"
|
||||
local fe_urls admin_urls
|
||||
fe_urls="$(wait_and_collect_network_urls "$fe_log" 8)"
|
||||
admin_urls="$(wait_and_collect_network_urls "$admin_log" 4)"
|
||||
|
||||
if [[ -n "$fe_urls" || -n "$admin_urls" ]]; then
|
||||
printf "\n${COLOR_CYAN}局域网访问地址${COLOR_RESET}(同 WiFi/LAN 下其他设备可直接访问):\n"
|
||||
if [[ -n "$fe_urls" ]]; then
|
||||
printf " 前台用户端:\n"
|
||||
while IFS= read -r line; do
|
||||
[[ -z "$line" ]] && continue
|
||||
printf " %s\n" "$line"
|
||||
done <<< "$fe_urls"
|
||||
fi
|
||||
if [[ -n "$admin_urls" ]]; then
|
||||
printf " 后台管理端:\n"
|
||||
while IFS= read -r line; do
|
||||
[[ -z "$line" ]] && continue
|
||||
printf " %s\n" "$line"
|
||||
done <<< "$admin_urls"
|
||||
fi
|
||||
printf " 提示:接口代理走前端 Vite,后端 API(8085) / 媒体(3300) 默认绑定 0.0.0.0,\n"
|
||||
printf " 如需从其他设备访问 API/媒体,需要在前端 .env 里把 baseURL 改成本机 LAN IP。\n"
|
||||
fi
|
||||
|
||||
printf "\n 日志目录: %s\n" "$LOG_DIR"
|
||||
printf " PID 目录: %s\n" "$RUN_DIR"
|
||||
printf " 查看状态: ./scripts/status.sh\n"
|
||||
printf " 停止全部: ./scripts/stop.sh\n"
|
||||
|
||||
Reference in New Issue
Block a user