Skip to content

deploy.sh: npm ci не устанавливает devDependencies (vue-tsc not found) #359

@ShaerWare

Description

@ShaerWare

Проблема

При каждом запуске 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 секунд:

sleep 20

Заметка

deploy.sh — локальный файл (не в git), поэтому исправление нужно применять вручную на сервере.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions