nschurmann / mongoapp-curso-docker

Aplicación para el curso gratuito de docker
142 stars 135 forks source link

Error ||| node:internal/errors:484 #4

Open Miles-Arts opened 1 year ago

Miles-Arts commented 1 year ago

Hola Nico gracias por tu clase de Docker 😁

Al llamar a node index.js Me salta el error, pensé que era por "express" lo descargue aparte con npm y el error persiste, cambié las rutas de las carpetas por las que tengo en mi pc y nada XD cambie la versión de Node que están en los files, a la ultima y nada XD

`$ node index.js
node:internal/errors:484
    ErrorCaptureStackTrace(err);
    ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'express' imported
 from C:\Users\gratn\documents\html\vhtml\cursodocker\mongoapp-curso
-docker-main\index.js
←[90m    at new NodeError (node:internal/errors:393:5)←[39m
←[90m    at packageResolve (node:internal/modules/esm/resolve:860:9)
←[39m
←[90m    at moduleResolve (node:internal/modules/esm/resolve:909:20)
←[39m
←[90m    at defaultResolve (node:internal/modules/esm/resolve:1124:1
1)←[39m
←[90m    at nextResolve (node:internal/modules/esm/loader:163:28)←[3
9m
←[90m    at ESMLoader.resolve (node:internal/modules/esm/loader:841:
30)←[39m
←[90m    at ESMLoader.getModuleJob (node:internal/modules/esm/loader
:424:18)←[39m
←[90m    at ModuleWrap.<anonymous> (node:internal/modules/esm/module
_job:76:40)←[39m
←[90m    at link (node:internal/modules/esm/module_job:75:36)←[39m {

  code: ←[32m'ERR_MODULE_NOT_FOUND'←[39m
}

Node.js v18.12.1

`

adjunto mi repo https://github.com/Miles-Arts/dockercurso

Gracias Nicolas por tu tiempo por cierto gran entrevista con Hdeleon 🎶

lupi5440 commented 1 month ago

Hola , como mencionas no se encuentra el paquete express, no se porque pero yo provando con una pc con docker hub de windows y otra de linux, la de windows me dio el error, la forma que lo correji fue directanmente agregar un Run para instalar inicialmente las dependencias (ademas que vi que al construir el contenedor se pone al final --build para tratar que se creee correctamente ya que suele haber problemas con las imagenes anteriores , o bueno como las cree muchas veces pues me genero error , anexo codigo

# FFOM define la imagen base que se utilizará para crear el contenedor de la aplicación
FROM node:18
# RUN ejecuta un comando en el contenedor (linux)
RUN mkdir -p /home/app
# Copy copia los archivos del ordenador maestro al contenedor
# El formato es: COPY <directorio origen> <directorio destino>
COPY . /home/app
# Instalar dependencias de node
RUN cd /home/app && npm install
# EXPOSE indica el puerto que se expondrá
EXPOSE 3000
# CMD indica el comando que se ejecutará al iniciar el contenedor, las rutas deben ser completas
CMD ["node", "/home/app/index.js"]

Asi mismo cuando intente hacer con nodemon no detectaba los cambios , este es igual problema de windows , se arregla teniendo que crear la importacion de los modulos, posteriormente esta carpeta node module se vincula con un volumen y se excluye en la sincronizacion del volumen de la carpeta (esto es porque cuando se sincroniza como en la carpeta que usamos no lo tiene lo borra), asi mismo se deve dar un comando al usar nodemon el cual es --legacy-watch, este para que haga bien la sincronizacion en windows, agrego codigos

version: "3.9"

services:
  chanchito:
    build:
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - "3000:3000"
    links:
      - monguito
    volumes:
      # Monta el código fuente, pero excluye node_modules
      - .:/home/app:cached
      - /home/app/node_modules
    command: ["nodemon", "--legacy-watch", "index.js"]

  monguito:
    image: mongo
    ports:
      - "27017:27017"
    environment:
      - MONGO_INITDB_ROOT_USERNAME=nico
      - MONGO_INITDB_ROOT_PASSWORD=password
    volumes:
      - mongo-data:/data/db

volumes:
  mongo-data:
FROM node:18

# Instala nodemon globalmente
RUN npm install -g nodemon

# Crea y establece el directorio de trabajo
WORKDIR /home/app

# Copia los archivos de dependencias primero
COPY package*.json ./

# Instala las dependencias
RUN npm install

# Copia el resto de los archivos
COPY . .

# Exponer el puerto 3000
EXPOSE 3000

# Iniciar la aplicación con nodemon
CMD ["nodemon", "index.js"]