Errores con gulp

Como cualquier artefacto de programación, gulp puede lanzar excepciones que impidan que se lleven a cabo las tareas que tiene programadas. Además, en este entorno, es especialmente difícil tener una constancia clara de qué excepciones pueden producirse, y qué hacer para resolverlas. Esto se debe al hecho de que gulp es sólo un núcleo, que actúa como cargador para los distintos plugins que necesitemos, y que son estos los que llevan a cabo las tareas. Como el número de plugins que pueden llegar a usarse en el gestor de tareas de un proyecto concreto puede ser muy alto (actualmente existen tantos plugins de gulp que es imposible encontrar una lista medio detallada de todos ellos), no es posible prever una metodología universal para depuración de excepciones.

Lo que sí se puede hacer es establecer unas pautas para detección y resolución de estas excepciones. Ese es el objetivo, modesto a la fuerza, pero importante, de este artículo.

DECLARACIÓN FORZOSA DE VARIABLES

Una de las mayores debilidades que JavaScript ha tenido siempre es el hecho de que la mayoría de los navegadores ejecutan sin problemas cualquier script que emplee variables que no han sido declaradas previamente, convirtiendo la instrucción var en una mera declaración de intenciones, al permitir que su uso sea opcional. Eso es algo que ningún lenguaje actual debería permitirse, por la cantidad de errores a que se presta.

Afortunadamente, los autores de JavaScript, en su versión 6, han subsanado esta deficiencia. O, mejor dicho, nos han permitido subsanarla a los desarrolladores. Cualquier script actual puede iniciarse con la siguiente línea:

"use strict";

Esto hará que, si en algún punto del script se emplea una variable que no haya sido declarada con var o con let, se produzca un error de ejecución.

Hasta ahora no lo habíamos empleado, porque no habíamos hablado de ello. En lo sucesivo, todos nuestros archivos gulpfile.js, y cualesquiera otros que empleemos de JavaScript se inicializarán así.

ATENCIÓN. Aunque se trata de una sintaxis atípica para una instrucción, la línea que hemos comentado aquí debe incluirse tal como la ves, con las comillas. No se trata de un error tipográfico.

USAR UN PLUGIN NO INSTALADO

Este es uno de los errores más típicos cuando se trabaja con gulp. Creamos un archivo gulpfile.js que hace uso de tal o cual plugin, pero este no se encuentra instalado en el proyecto, debido a que, a causa de los distintos aspectos que debemos controlar de nuestro desarrollo, hemos olvidado instalarlo con npm. Afortunadamente, el mensaje de error es muy claro y detallado cuando tratamos de ejecutar el comando gulp. Suponte que tenemos un archivo para compilar sass a css, pero hemos olvidado instalar el plugin gulp-sass. Al ejecutar gulp obtendremos en la consola una salida como la siguiente:

Observa la línea resaltada, que nos está diciendo claramente que no está instalado un plugin específico (en este ejemplo, gulp-sass). En el archivo de tareas se invoca este plugin, lo que da lugar al error que ves. Una vez que sabes donde mirar, es muy fácil darse cuenta de qué es lo que sucede, e instalar el plugin requerido.

ARCHIVOS ERRÓNEOS

Otro error que se produce en ocasiones es que el gestor de tareas tenga que procesar un archivo que no se ajusta al formato adecuado. Imagina, por ejemplo, que tenemos una tarea para compilar sass a css, pero el archivo sass se ha corrompido y, en lugar de tener la sintaxis de sass adecuada, tiene un montón de nada parecido a nada. Esto sucede con relativamente poca frecuencia, sobre todo porque la sintaxis de sass es más tolerante para la mayoría de los pequeños errores de lo que a los desarrolladores nos gustaría. No obstante, te voy a plantear un caso extremo, que se me dio recientemente durante unas pruebas. El archivo de sass que yo tenía (y del que, afortunadamente, conservaba copia), se había corrompido, hasta el extremo de convertirse en una serie de dígitos y guarismos sin sentido. Evidentemente, no se generaba el archivo css pero, además, en la consola obtenía un aviso como el que ves a continuación:

Esto se debe a que gulp monta, de forma nativa, un gestor de eventos, llamado events.js, que detecta el evento producido y lo vuelca a la consola. Sin embargo, no siempre es tan claro como en este caso. Aquí es muy evidente (observa las líneas resaltadas), que el fallo viene producido por el fichero scss. Sin embargo, en otros casos, podría ser más críptico. Además, dependiendo del error, es muy posible que se límite a no hacer la conversión, sin volcar mensaje alguno, y esto sí es un problema. En este caso, sólo nos queda revisar el fichero original.

Hay técnicas más elaboradas de depuración, basadas en capturar las excepciones, que conoceremos en posteriores artículos. En este hemos visto las pautas generales de depuración que siempre debemos tener en cuenta.

   

Deja un comentario