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
dependencieso - Elimina la variable de entorno
NODE_ENVo - 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
productionaquí), y usa archivos JS en la segunda etapa (no necesitasdevDependenciesaquí, así queproductionfuncionará).