Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.6K
Vistas
TSC no encontrado en la compilación de Docker

Cuando construyo una imagen que debe compilarse a partir de mecanografiado, aparece este error.

sh: 1: tsc: no encontrado

El comando '/bin/sh -c npm run tsc' devolvió un código distinto de cero: 127

Aquí está el código relevante:

docker-compose.yaml

 version: '3.1' services: nodeserver: build: context: . target: prod ports: - "3000:3000" volumes: - ./src:/app/src - ./public:/app/public - ./templates:/app/templates

Dockerfile

 FROM node:15.11.0 AS base EXPOSE 3000 ENV NODE_ENV=production WORKDIR /app COPY package*.json ./ RUN npm install --only=production && npm cache clean --force ########################################################################################## FROM base AS dev ENV NODE_ENV=development RUN npm install --only=development CMD npm run dev ########################################################################################## FROM dev AS source COPY dist dist COPY templates templates COPY public public RUN npm run tsc ########################################################################################## FROM base AS test COPY --from=source /app/node_modules /app/node_modules COPY --from=source /app/templates /app/templates COPY --from=source /app/public /app/public COPY --from=source /app/dist /app/dist CMD npm run test ########################################################################################## FROM test AS prod CMD npm start

paquete.json

 { "name": "nodeserver", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node ./dist/app.js", "deploy": "git add . && git commit -m Heroku && git push heroku main", "tsc": "tsc --outDir ./dist", "dev": "npm run ts-watch", "test": "npm run jest --runInBand", "ts-watch": "tsc-watch --project . --outDir ./dist --onSuccess \"nodemon ./dist/app.js\"" }, "jest": { "testEnvironment": "node" }, "repository": { "type": "git", "url": "git+https://github.com/MiquelPiza/nodeserver.git" }, "author": "", "license": "ISC", "bugs": { "url": "https://github.com/MiquelPiza/nodeserver/issues" }, "homepage": "https://github.com/MiquelPiza/nodeserver#readme", "dependencies": { "@sendgrid/mail": "^7.4.2", "bcryptjs": "^2.4.3", "express": "^4.17.1", "handlebars": "^4.7.7", "jsonwebtoken": "^8.5.1", "lodash": "^4.17.20", "mongodb": "^3.6.4", "mongoose": "^5.11.19", "multer": "^1.4.2", "socket.io": "^4.0.0", "validator": "^13.5.2" }, "devDependencies": { "@types/bcryptjs": "^2.4.2", "@types/express": "^4.17.11", "@types/jsonwebtoken": "^8.5.0", "@types/lodash": "^4.14.168", "@types/mongoose": "^5.10.3", "@types/multer": "^1.4.5", "@types/node": "^14.14.33", "@types/sendgrid": "^4.3.0", "@types/validator": "^13.1.3", "env-cmd": "^10.1.0", "jest": "^26.6.3", "nodemon": "^2.0.7", "supertest": "^6.1.3", "tsc-watch": "^4.2.9", "typescript": "^4.2.3" }, "engines": { "node": "15.11.0" } }

tsconfig.json

 { "compilerOptions": { "target": "es5", "module": "commonjs", "strict": true, "strictNullChecks": false, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, }, "include": ["src"] }

Este dockerfile funciona:

 FROM node:15.11.0 AS build WORKDIR /app COPY package.json . RUN npm install ADD . . RUN npm run tsc FROM node:15.11.0 WORKDIR /app COPY package.json . RUN npm install --production ADD public ./public ADD templates ./templates COPY --from=build /app/dist dist EXPOSE 3000 CMD npm start

Estoy usando este dockerfile como referencia, de un curso de Docker: https://github.com/BretFisher/docker-mastery-for-nodejs/blob/master/typescript/Dockerfile No veo lo que estoy haciendo mal , la etapa de origen debe tener las dependencias de desarrollo, entre ellas TypeScript, por lo que debería poder ejecutar tsc.

Cualquier ayuda apreciada. Gracias.

EDITAR:

Además de usar npm ci en lugar de npm install, tuve que copiar tsconfig.json en el directorio de trabajo (y copiar el directorio src en lugar de dist, que crea tsc) para que tsc funcione correctamente. Esta es la etapa de origen modificada en el Dockerfile:

 FROM dev AS source COPY src src COPY templates templates COPY public public COPY tsconfig.json tsconfig.json RUN npm run tsc
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Probablemente sea un problema de variable de entorno NODE_ENV .

 ENV NODE_ENV=production

Si configura de esta manera, las dependencias en devDependencies no se instalarán.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda