Búsqueda de sitios web

node.js - Compilar código TypeScript en Dockerfile no funciona (No se puede encontrar el nombre 'process')


Tengo el siguiente Dockerfile:

FROM node:latest
WORKDIR /usr/src/app

ENV NODE_ENV=production

COPY package*.json .
    
RUN npm install && npm i -g typescript

COPY . .

RUN  tsc

CMD [ "node", "./dist/index.js" ]

Y el siguiente package.json:

  "dependencies": {
    "discord.js": "^12.5.3",
    "moment": "^2.29.1"
  },
  "devDependencies": {
    "@types/node": "^14.14.37",
    "typescript": "^4.2.4"
  }

Cuando intento construir la imagen, obtengo el siguiente error:

Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`

¿Alguien sabe por qué pasa eso? Tengo @types/node instalado.

Respuesta #1

devDependencies no se instalarán en el modo de producción.

Entonces, puedes:

  • Mueve estos paquetes a dependencies o
  • Elimina la variable de entorno NODE_ENV o
  • Usa construcción en múltiples etapas, donde compilarás TypeScript en la primera etapa (mantén las dependencias como están, pero no necesitas production aquí), y usa archivos JS en la segunda etapa (no necesitas devDependencies aquí, así que production funcionará).

Artículos relacionados