diff --git a/build.js b/build.js index e7e3a25..b09b785 100644 --- a/build.js +++ b/build.js @@ -25,8 +25,35 @@ function copyDir(srcDir, destDir) { } } +/** 清空目录内容(不删目录本身),避免 EPERM(如宝塔 wwwroot 下 dist 无法 rmSync) */ +function emptyDir(dir) { + if (!fs.existsSync(dir)) return; + for (const name of fs.readdirSync(dir)) { + const p = path.join(dir, name); + try { + if (fs.statSync(p).isDirectory()) { + fs.rmSync(p, { recursive: true }); + } else { + fs.unlinkSync(p); + } + } catch (e) { + if (e.code !== 'EPERM' && e.code !== 'EACCES') throw e; + } + } +} + function main() { - if (fs.existsSync(DIST)) fs.rmSync(DIST, { recursive: true }); + if (fs.existsSync(DIST)) { + try { + fs.rmSync(DIST, { recursive: true }); + } catch (e) { + if (e.code === 'EPERM' || e.code === 'EACCES') { + emptyDir(DIST); + } else { + throw e; + } + } + } fs.mkdirSync(DIST, { recursive: true }); copyFile(path.join(ROOT, 'index.html'), path.join(DIST, 'index.html')); diff --git a/check-nginx-and-api.sh b/check-nginx-and-api.sh new file mode 100644 index 0000000..6aff5d3 --- /dev/null +++ b/check-nginx-and-api.sh @@ -0,0 +1,81 @@ +#!/usr/bin/env bash +# 检查 Nginx 反代配置与本地 API(5599)是否正常 +# 在服务器上执行: ./check-nginx-and-api.sh [Nginx站点配置路径] +# 例: ./check-nginx-and-api.sh /www/server/panel/vhost/nginx/view.airtep.com.conf + +PORT="${PORT:-5599}" +NGINX_CONF="${1:-}" + +echo "========== 1. 检查 API 是否监听并响应 ==========" +if command -v ss >/dev/null 2>&1; then + if ss -tlnp 2>/dev/null | grep -q ":$PORT "; then + echo "端口 ${PORT} 已在监听。" + else + echo "端口 ${PORT} 未在监听,请先执行: ./start-api.sh 或 ./run.sh" + fi +fi + +echo "" +echo "---------- curl http://127.0.0.1:${PORT}/config ----------" +if command -v curl >/dev/null 2>&1; then + code=$(curl -s -o /tmp/check-api-config.txt -w "%{http_code}" "http://127.0.0.1:${PORT}/config" 2>/dev/null) + echo "HTTP 状态码: $code" + if [ "$code" = "200" ]; then + echo "响应内容: $(cat /tmp/check-api-config.txt 2>/dev/null | head -c 200)" + echo "" + echo "[OK] 本机 API 正常。" + else + echo "[失败] 本机 API 未返回 200,请启动后端: ./start-api.sh" + fi + rm -f /tmp/check-api-config.txt +else + echo "未安装 curl,跳过。" +fi + +echo "" +echo "========== 2. 检查 Nginx 反代配置 ==========" +if [ -z "$NGINX_CONF" ]; then + echo "未传入 Nginx 配置路径。用法: $0 /www/server/panel/vhost/nginx/view.airtep.com.conf" + echo "请确认站点配置中包含:" + echo " location /api {" + echo " proxy_pass http://127.0.0.1:5599/; # 末尾必须有 /,且建议用 127.0.0.1 不用 localhost" + echo " ..." + echo " }" + exit 0 +fi + +if [ ! -f "$NGINX_CONF" ]; then + echo "文件不存在: $NGINX_CONF" + exit 1 +fi + +echo "配置文件: $NGINX_CONF" +echo "" +if grep -q "location /api" "$NGINX_CONF"; then + echo "--- location /api 片段 ---" + sed -n '/location \/api/,/^[[:space:]]*}/p' "$NGINX_CONF" | head -15 + if grep -A1 "location /api" "$NGINX_CONF" | grep -q "proxy_pass http://127.0.0.1:5599/"; then + echo "" + echo "[OK] proxy_pass 为 http://127.0.0.1:5599/(正确)。" + elif grep -A1 "location /api" "$NGINX_CONF" | grep -q "proxy_pass.*5599"; then + echo "" + echo "[注意] 请将 proxy_pass 改为: http://127.0.0.1:5599/ (末尾加 /,并用 127.0.0.1)" + else + echo "" + echo "[注意] 未找到 proxy_pass 到 5599,请检查配置。" + fi +else + echo "[失败] 未找到 location /api,请添加反代到 5599。" +fi + +echo "" +echo "========== 3. 测试经 Nginx 访问 /api/config(本机)===========" +if command -v curl >/dev/null 2>&1; then + code_nginx=$(curl -s -o /dev/null -w "%{http_code}" "http://127.0.0.1/api/config" -H "Host: view.airtep.com" 2>/dev/null) + echo "curl -H Host:view.airtep.com http://127.0.0.1/api/config => HTTP $code_nginx" + if [ "$code_nginx" = "200" ]; then + echo "[OK] 经 Nginx 反代访问 /api/config 正常。" + else + echo "[注意] 经 Nginx 返回 $code_nginx,请检查 Nginx 配置并重载: nginx -t && nginx -s reload" + fi +fi