IIC2513-2022 / syllabus-2

Repositorio oficial de la sección 2 del periodo 2022-1 del curso PUC IIC2513 Tecnologías y Aplicaciones Web
33 stars 4 forks source link

npm no me esta instalando y yarn add tampoco me funciona #28

Open amunitac opened 2 years ago

amunitac commented 2 years ago

nose porque dejo de funcionarme nom install y yarn add tampoco funciona, ambos se quedan pegados

hernancabrerap commented 2 years ago

Al utilizar un ambiente semi-virtualizado como wsl (no me gusta pero ese es otro asunto) lo que se hace es colocar una capa de software que gestiona llamadas del kernel de Linux al sistema operativo "host" que en este caso es Windows 10+ Así pues, se puede correr bash de Linux y operar Linux pero con servicios de S.O. gestionado por Windows. Uno de los servicios que el S-O. host atiende es la conexión a la red... y he allí la tragedia que ocurre, a veces. En este caso particular (me refiero a esta issue) npm no se podía conectar a https://registry.npmjs.org/ que es la url de registro de npm. Espera.. que es una url de registro?.. AH pues!, npm nos lo puede contar:

"Para resolver los paquetes por nombre y versión, npm habla con un sitio web de registro que implementa la especificación CommonJS Package Registry para leer la información de los paquetes. npm está configurado para utilizar el registro público npm en https://registry.npmjs.org por defecto"

Así es, npm tiene que saber donde buscar algo como "npm install koa" en ese caso busca el nombre "koa" en el registry, este lo encuentra y le dice desde donde descargarlo y luego npm "va a ese lugar" y lo descarga.. (No se habían preguntado nunca como es que npm sabía donde descargar las cosas?)

Bueno, volvamos... para que npm encuentre algo va a la url de registry PERO Windows no sabía a que "lugar" se refería registry.npmjs.org simplemente el S.O Windows no era capaz de "rutear" un nombre como ese y fracasaba todo.

Recuerdan que un nobre como bbc.co.uk es en realidad una "ficción" pues internet usa direcciones IP y no nombres?

Pues bien, alguien tiene que hacer la asociación entre el nombre y la IP y esas son tablas que manejan los S.O. (el famoso DNS, recuerdan?)

Ya, están todos los actores.. npm que requiere ir a una url, wsl que le pide a Windows que vaya y Windows que no tiene idea como llegar.

Solución? pues ir a un directorio en particular de Windows donde uno puede darle una ayuda y hacer una relación (mapping) entre una IP y un nombre y ese es el archivo hosts que está en el directorio C:\Windows\System32\drivers\etc Así uno va, abre el archivo hosts (con notepad) e inserta una simple línea:

DireccionIP nombre

Para este caso, se requiere la IP de registry.npmjs.org, averiguarla es fácil .. si fueron a clases y se acuerdan, es cosa de hacer ping registry.npmjs.org y sale. (Para hacer ping, es tan fácil como abrir el terminal de windows y ejecutar esa instrucción)

la IP es: 104.16.17.35 (lo acbo de hacer!)

Y ya todo ha concluído... se escribe en el archivo hosts

104.16.17.35 registry.npmjs.org

Se guarda el archivo y npm comenzó a descargar el mundo completo.

Saludos!