💬Клуб Vue.js-разработчиков👤Виктор💬4 ответа📅 30 декабря 2025 г. в 17:52

Приветствую! Как мне правильно разрулить ошибку? 0.469 > book-club-ui@0.0.0 type-check...

Приветствую! Как мне правильно разрулить ошибку? 0.469 > book-club-ui@0.0.0 type-check /app 0.469 > vue-tsc --build 0.469 0.586 ✘ [ERROR] Cannot start service: Host version "0.25.9" does not match binary version "0.27.2" Мой Dockerfile FROM node:22 AS build-stage WORKDIR /app COPY package*.json ./ RUN npm install -g pnpm RUN pnpm install COPY . . RUN pnpm run build FROM nginx:stable-alpine AS production-stage COPY --from=build-stage /app/dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] Мой package.json { "name": "book-club-ui", "version": "0.0.0", "private": true, "type": "module", "scripts": { "dev": "vite", "build": "run-p type-check \"build-only {@}\" --", "preview": "vite preview", "test:unit": "vitest", "test:e2e": "playwright test", "build-only": "vite build", "type-check": "vue-tsc --build", "lint": "eslint . --fix", "format": "prettier --write src/" }, "dependencies": { "allure-playwright": "^3.3.2", "axios": "^1.11.0", "pinia": "^3.0.3", "vee-validate": "^4.15.1", "vue": "^3.5.17", "vue-router": "^4.5.1", "yup": "^1.6.1" }, "devDependencies": { "@playwright/test": "^1.53.1", "@tsconfig/node22": "^22.0.2", "@types/jsdom": "^21.1.7", "@types/node": "^22.15.32", "@vitejs/plugin-vue": "^6.0.0", "@vitest/eslint-plugin": "^1.2.7", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.5.1", "@vue/test-utils": "^2.4.6", "@vue/tsconfig": "^0.7.0", "eslint": "^9.29.0", "eslint-plugin-playwright": "^2.2.0", "eslint-plugin-vue": "~10.2.0", "jiti": "^2.4.2", "jsdom": "^26.1.0", "npm-run-all2": "^8.0.4", "prettier": "3.5.3", "typescript": "~5.8.0", "vite": "^7.0.0", "vite-plugin-vue-devtools": "^7.7.7", "vitest": "^3.2.4", "vue-tsc": "^2.2.10" } }
Реклама
📢

Дигитал трафик

Канал о digital-маркетинге, трафике и росте бизнеса

@trafficisobar

Ответы4

В
Виктор👍1⭐ Лучший ответ
30 дек., 19:16
Я по итогу сделал так в Dockerfile COPY package*.json pnpm-lock.yaml ./ И версию для pnpm RUN npm install -g pnpm@10.15.0 Сейчас все норм собирается.
🔥1
V
Vladyslav@zhdenyk0
30 дек., 19:09
Привет 🙂 Ошибка тут не в Dockerfile как таковом, а в конфликте версий esbuild, который используется vue-tsc. В чём суть ошибки Cannot start service: Host version "0.25.9" does not match binary version "0.27.2" vue-tsc внутри себя запускает esbuild как бинарник. У тебя получается ситуация: JS-часть esbuild → версия 0.25.9 Скачанный бинарник esbuild → версия 0.27.2 Когда они не совпадают — esbuild падает сразу при старте, и vue-tsc --build рушит сборку. В Docker это проявляется особенно часто, потому что: бинарники скачиваются заново, кеши npm/pnpm могут конфликтовать, esbuild тянется транзитивно разными зависимостями. Почему именно у тебя Основные триггеры в твоём проекте: Node 22 vite 7 vue-tsc 2.2.10 pnpm vite@7 и vue-tsc@2.2.x сейчас тянут разные диапазоны esbuild, и pnpm не всегда дедуплицирует их в одну версию. ✅ Лучшие способы решения (по порядку надёжности) 🔥 Вариант 1 (РЕКОМЕНДУЮ): зафиксировать esbuild вручную Добавь явно esbuild в devDependencies: "devDependencies": { "esbuild": "0.27.2", "vue-tsc": "^2.2.10" } И (важно!) добавь override для pnpm: "pnpm": { "overrides": { "esbuild": "0.27.2" } } 👉 Это заставит все зависимости использовать одну версию бинарника. После этого: rm -rf node_modules pnpm-lock.yaml pnpm install ⚙️ Вариант 2: downgrade esbuild до версии vue-tsc Если хочешь играть безопасно: "esbuild": "0.25.9" И тот же pnpm.overrides. 🧱 Вариант 3: обновить vue-tsc (если выйдет фикс) Проверь: pnpm view vue-tsc version Если появится версия ≥ 2.2.11 — возможно конфликт уже исправлен. 🔧 Небольшое улучшение Dockerfile (рекомендация) Добавь чистую установку без кешей: RUN pnpm install --frozen-lockfile И убедись, что lock-файл в репозитории. Итог 📌 Причина Несовпадение JS-версии и бинарника esbuild 📌 Лучшее решение Жёстко зафиксировать esbuild через pnpm.overrides 📌 Почему это нормально Сейчас это частая проблема связки: Node 22 + Vite 7 + vue-tsc + pnpm Если хочешь — могу: проверить какая зависимость тянет esbuild 0.25.9 подсказать самую стабильную комбинацию версий под Node 22 предложить оптимальный CI/Docker setup для Vue + TS Просто скажи 👍
N
Nikolai Geldyev@nikoeno0
30 дек., 19:14
кто нейронку не туда настроил
А
Алексей@ligebit0
31 дек., 12:39
Если удалить папку с пакетами, package-lock.json, pnpm-lock.yaml и заново установить все пакеты, разве не выскочит та же ошибка?