Проблема
При каждом запуске deploy.sh сборка фронтенда падает с ошибкой sh: 1: vue-tsc: not found. Это происходит стабильно и требует ручного npm ci перед повторным запуском.
Воспроизведение
bash /opt/ai-secretary/deploy.sh
# → "vue-tsc: not found", rsync fails (exit 23)
# Workaround:
cd /opt/ai-secretary/admin && npm ci
bash /opt/ai-secretary/deploy.sh # → OK
Анализ
deploy.sh строка 51:
npm ci --silent 2>&1 | tee -a "$LOG_FILE"
vue-tsc указан в devDependencies (package.json), а build скрипт (vue-tsc -b && vite build) требует его.
Вероятная причина: в окружении оболочки установлен NODE_ENV=production (через .env, .bashrc или systemd EnvironmentFile), что заставляет npm ci пропускать devDependencies. При ручном запуске npm ci переменная не установлена — всё работает.
Флаг --silent маскирует любые предупреждения npm о пропуске devDependencies.
Решение
Явно указать npm устанавливать все зависимости. Заменить строку 51:
# Было:
npm ci --silent 2>&1 | tee -a "$LOG_FILE"
# Стало:
NODE_ENV=development npm ci 2>&1 | tee -a "$LOG_FILE"
Или использовать флаг --include=dev:
npm ci --include=dev 2>&1 | tee -a "$LOG_FILE"
Дополнительно
Health check (строка 80–85) ждёт только 5 секунд, но оркестратор стартует ~17 секунд. Стоит увеличить до 20–25 секунд:
Заметка
deploy.sh — локальный файл (не в git), поэтому исправление нужно применять вручную на сервере.
Проблема
При каждом запуске
deploy.shсборка фронтенда падает с ошибкойsh: 1: vue-tsc: not found. Это происходит стабильно и требует ручногоnpm ciперед повторным запуском.Воспроизведение
Анализ
deploy.shстрока 51:vue-tscуказан вdevDependencies(package.json), аbuildскрипт (vue-tsc -b && vite build) требует его.Вероятная причина: в окружении оболочки установлен
NODE_ENV=production(через.env,.bashrcили systemd EnvironmentFile), что заставляетnpm ciпропускать devDependencies. При ручном запускеnpm ciпеременная не установлена — всё работает.Флаг
--silentмаскирует любые предупреждения npm о пропуске devDependencies.Решение
Явно указать npm устанавливать все зависимости. Заменить строку 51:
Или использовать флаг
--include=dev:Дополнительно
Health check (строка 80–85) ждёт только 5 секунд, но оркестратор стартует ~17 секунд. Стоит увеличить до 20–25 секунд:
Заметка
deploy.sh— локальный файл (не в git), поэтому исправление нужно применять вручную на сервере.