Aprende a resolver esta excepción al usar Gulp V3 en Node.js 12.

Cómo resolver la excepción de gulp: Reference Error primordials is not defined error

Mientras trabajaba en un proyecto que usaba gulp en mi entorno, noté que el mismo proyecto que estaba funcionando bastante bien en el entorno de otros amigos en la oficina, no estaba funcionando en el mío. Estaba lanzando la excepción mencionada, Error de referencia: primordials is not defined.

Parece que gulp v3 tiene problemas cuando se ejecuta en un entorno Node.js 12, porque una de las dependencias, especificamente, graceful-fs (un reemplazo directo para el módulo fs, que realiza varias mejoras), no es compatible con esta versión de Node. Entonces, las opciones para resolver el problema eran claras:

  1. O actualizas a gulp v4 (modificando tu código fuente, gastando quizas mucho tiempo).
  2. Retroceder específicamente la versión de graceful-fs en tu proyecto.

Como no podemos simplemente reescribir el código ya que no sería rentable para nosotros, la solución fue simplemente forzar nuestro proyecto a instalar la versión 4.2.2 específica de graceful-fs. Eso es lo que aprenderás a hacer el dia de hoy en este artículo.

1. Eliminar node_modules

Como primer paso, deberás eliminar todas las dependencias que ya hayas instalado, porque si intentas ejecutar npm install, las mismas dependencias se mantendrán con la misma versión, pero nuestra solución obliga a degradar graceful-fs a una version anterior. Entonces, simplemente elimina el directorio node_modules y su contenido.

2. Cree npm-shrinkwrap.json

Después de eliminar el directorio de dependencias, procede a crear el siguiente archivo, especificamente, el archivo npm-shrinkwrap.json con el siguiente contenido en el mismo directorio de su proyecto (donde package.json se encuentra):

{
    "dependencies": {
        "graceful-fs": {
            "version": "4.2.2"
        }
    }
}

Puedes encontrar una descripción detallada sobre este archivo en la documentación oficial de NPM aquí.

3. Instalar dependencias

Después de crear el archivo del paso # 2, procede a instalar una vez más las dependencias de tu proyecto con npm:

npm install

Esto iniciará la instalación de las dependencias y npm te advertirá sobre la versión de archivo de bloqueo del archivo shrinkwrap:

Gulp Install Node.js Primordials

Esto también modificará el archivo npm-shrinkwrap.json archivo creado previamente con mucho contenido como este:

{
    "name": "yourproject_name",
    "version": "x.x.x",
    "lockfileVersion": 1,
    "requires": true,
    "dependencies": {
        
        // .. //

        "@gulp-sourcemaps/identity-map": {
            "version": "1.0.2",
            "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz",
            "integrity": "sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ==",
            "dev": true,
            "requires": {
                "acorn": "^5.0.3",
                "css": "^2.2.1",
                "normalize-path": "^2.1.1",
                "source-map": "^0.6.0",
                "through2": "^2.0.3"
            }
        }

        // .. //
    }
}

Puedes ignorar esto por el momento. Después de instalar las dependencias, todo debería funcionar como se esperaba y la compilación debería tener éxito como de costumbre:

gulp build --production

Que te diviertas ❤️!


Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores