- Cuarzo.dev
- Posts
- ¿Usas git? ¡pues ten cuidado con ESTO!
¿Usas git? ¡pues ten cuidado con ESTO!
En este articulo te voy a contar un problema que he averiguado al usar Git, ¡ten cuidado que no te pase a ti!
Ahora estoy haciendo una aplicación en NodeJS, y ayer estuve actualizando las librerías a las últimas versiones.
Ese gran día, en que se mezclan sentimientos de emoción por lo nuevo y miedo porque todo siga funcionando
Las actualicé todas, y ejecute el programada node (y crucé los dedos)
y todo funcionaba perfectamente, genial, así que subí los cambios al servidor y reinicié la aplicación en el servidor y para mi sorpresa
¡pam! ¡¡error!! no encuentra el módulo de una librería
¿¡Pero cómo puede ser!? ¡¡si en local iba!! ¡sigue yendo de hecho!
Entonces estuve ahí dándole vueltas, buscando por Google a ver si encontraba algo parecido y nada... no tenía ni la menor idea de que lo que pasaba, hasta probé a borrar todos los módulos de node del proyecto y volverlos a crear, pero nada, no había manera no iba, el mismo error una y otra vez.
Entonces decidí ir al origen del problema, ir al módulo donde estaba dando el error
Mire la línea donde se pedía el módulo con un nombre, y miré que el módulo estaba realmente allí, y estaba, estaba todo bien, nombres correctos, todo bien (esto en local).
Luego mire lo mismo en el servidor, y para mi sorpresa estaba todo bien... excepto el nombre del fichero al que llamaba, que tenía la primera letra en mayúscula, y en mi versión en local no estaba en mayúscula, y como todos sabemos Linux hace distinciones entre mayúsculas y minúsculas, mientras que windows no, así que el error era este, pero lo curioso es ¿cómo ha pasado? ¿cómo hemos llegado a esto? ¿por qué estaban diferentes?
Lo que ha pasado aquí es, que en primer lugar la librería tenía los nombres con las mayúsculas, entonces en el server y en mi local ambos estaban en mayúsculas, luego la nueva version de la librería lo cambió a minúscula, al actualizar en mi local se cambio a minúscula bien, al subir los cambios al servidor por lo que sea hizo los cambios en el fichero pero sin cambiar el nombre de este.
¿y por que?
Lo que uso para actualizar los ficheros del servidor es Git, y resulta que git en Linux y Mac no reconoce los cambios de nombres, es decir que si tienes un fichero en mayúscula y te llega un commit en el que hemos cambiado ese fichero, lo dejará en mayúscula, porque se cree que es el mismo nombre.
Entonces... ¿qué podemos hacer para que se aplique el cambio?
Una chapuza muy grande, podemos hacer dos cosas, borramos el fichero, hacemos commit de que hemos borrado ese fichero, volvemos a crear el fichero con el nombre nuevo y hacemos commit, así, si que irá. Otra cosa que podemos hacer es, renombrar ese fichero a otro nombre completamente diferente, hacer commit de ese cambio, y luego volver a cambiarle el nombre con el nombre adecuado y volver hacer commit.
Pues eso, una chapuza...
Reply