Răsfoiți Sursa

fix: 启动器区分平台并给出可读报错

- 启动.bat 增加标题/Node 版本回显/依赖安装失败检查,结束时 pause,双击出错不再一闪而过
- 启动.command 补齐 Homebrew/nvm/volta 路径(Finder 双击不加载 shell 配置),出错停住窗口
- README 明确:Windows 用 启动.bat,macOS 用 启动.command,跨平台不可混用
liangzhao 2 săptămâni în urmă
părinte
comite
210777c7a2
3 a modificat fișierele cu 76 adăugiri și 12 ștergeri
  1. 1 1
      README.md
  2. 31 3
      启动.bat
  3. 44 8
      启动.command

+ 1 - 1
README.md

@@ -247,7 +247,7 @@ workspace/
 
 > 运行要求 **Node.js >= 22.13**(内置 `node:sqlite`);启动脚本会先做版本检查。
 
-对方解压后双击 `启动.command`(macOS)或 `启动.bat`(Windows)即可:首次启动自动生成其本机 `config.json`,在「系统设置」中填写自己的 API Key;数据采集页按提示以调试端口启动并登录自己的商家客户端后同步取数。
+对方解压后按平台双击对应启动器:**Windows 用 `启动.bat`**,**macOS 用 `启动.command`**(`.command` 是 macOS 脚本,在 Windows 上无法运行;`.bat` 在 macOS 上也无效)。启动器会自检 Node 版本、自动装依赖,出错时窗口会停住显示原因。首次启动自动生成其本机 `config.json`,首次启动自动生成其本机 `config.json`,在「系统设置」中填写自己的 API Key;数据采集页按提示以调试端口启动并登录自己的商家客户端后同步取数。
 
 **升级已装过旧版的电脑**:把分发包解压覆盖到原目录即可(不要先删旧目录)。包内不含配置文件,覆盖不会动他们的历史 `config.json` / `session.json`;新版启动时会把历史配置与默认值合并读取 —— API Key、模型、Cookie 全部原样沿用,无需重填;若历史 `rootDir` 在本机不可用,启动时会提示到「系统设置」修改,不会崩溃。
 

+ 31 - 3
启动.bat

@@ -1,23 +1,51 @@
 @echo off
 chcp 65001 >nul
+title 智慧运营中台
 cd /d "%~dp0"
 
+echo ============================================
+echo   智慧运营中台 - Windows 启动器
+echo   目录:%CD%
+echo ============================================
+echo.
+
 where node >nul 2>nul
 if errorlevel 1 (
-  echo 未检测到 Node.js。请先安装 Node.js 22.13 或更高版本:https://nodejs.org/
+  echo [错误] 未检测到 Node.js。
+  echo 请先安装 Node.js 22.13 或更高版本:https://nodejs.org/
+  echo 安装后重新打开本窗口再试。
+  echo.
   pause
   exit /b 1
 )
+
 node -e "const [a,b]=process.versions.node.split('.').map(Number);if(a<22||(a===22&&b<13)){console.error('当前 Node.js '+process.version+' 过低,需要 22.13 及以上。');process.exit(1)}"
 if errorlevel 1 (
+  echo.
   pause
   exit /b 1
 )
 
+echo 使用 Node:%CD%
+node -v
+echo.
+
 if not exist node_modules (
-  echo 正在安装依赖...
+  echo 正在安装依赖(首次启动需要几分钟)...
   call npm install
+  if errorlevel 1 (
+    echo.
+    echo [错误] 依赖安装失败。请检查网络,或手动在命令行执行:npm install
+    pause
+    exit /b 1
+  )
 )
-echo 正在启动智慧运营中台...
+
+echo 正在启动服务,启动后请保持本窗口不要关闭...
+echo 浏览器访问:http://localhost:5177
+echo.
 call npm start
+
+echo.
+echo 服务已退出。若上方有报错信息,请截图反馈。
 pause

+ 44 - 8
启动.command

@@ -1,16 +1,52 @@
 #!/bin/bash
+# macOS 启动器(Windows 请用 启动.bat)
 cd "$(dirname "$0")" || exit 1
 
-# Node.js >= 22.13(内置 SQLite 驱动 node:sqlite 不再需要 flag)
-if ! command -v node >/dev/null 2>&1; then
-  echo "未检测到 Node.js。请先安装 Node.js 22.13 或更高版本:https://nodejs.org/"
-  exit 1
+# Finder 双击不会加载 shell 配置:补上 Homebrew / nvm / volta 常见路径
+export PATH="/opt/homebrew/bin:/usr/local/bin:$HOME/.volta/bin:$HOME/.local/bin:$PATH"
+if [ -s "$HOME/.nvm/nvm.sh" ]; then
+  # shellcheck disable=SC1090
+  . "$HOME/.nvm/nvm.sh" >/dev/null 2>&1
 fi
-node -e "const [a,b]=process.versions.node.split('.').map(Number);if(a<22||(a===22&&b<13)){console.error('当前 Node.js '+process.version+' 过低,需要 22.13 及以上。');process.exit(1)}" || exit 1
+
+fail() {
+  echo ""
+  echo "[错误] $1"
+  echo ""
+  if [ -t 0 ]; then
+    read -n 1 -s -r -p "按任意键关闭窗口…"
+    echo ""
+  fi
+  exit 1
+}
+
+echo "============================================"
+echo "  智慧运营中台 - macOS 启动器"
+echo "  目录:$(pwd)"
+echo "============================================"
+echo ""
+
+command -v node >/dev/null 2>&1 || fail "未检测到 Node.js。请安装 Node.js 22.13 或更高版本:https://nodejs.org/"
+command -v npm >/dev/null 2>&1 || fail "未检测到 npm(通常随 Node.js 一起安装)。"
+
+node -e "const [a,b]=process.versions.node.split('.').map(Number);if(a<22||(a===22&&b<13)){console.error('当前 Node.js '+process.version+' 过低,需要 22.13 及以上。');process.exit(1)}" \
+  || fail "Node.js 版本过低:$(node -v),需要 22.13 及以上。"
+
+echo "使用 Node:$(command -v node) ($(node -v))"
+echo ""
 
 if [ ! -d node_modules ]; then
-  echo "正在安装依赖..."
-  npm install || exit 1
+  echo "正在安装依赖(首次启动需要几分钟)..."
+  npm install || fail "依赖安装失败,请检查网络后重试。"
 fi
-echo "正在启动智慧运营中台..."
+
+echo "正在启动服务,启动后请保持本窗口不要关闭..."
+echo "浏览器访问:http://localhost:5177"
+echo ""
 npm start
+
+echo ""
+if [ -t 0 ]; then
+  read -n 1 -s -r -p "服务已退出,按任意键关闭窗口…"
+  echo ""
+fi