Cómo arreglar ReferenceError: los primordiales no están definidos en el nodo

368

He instalado módulos de nodo por npm install, luego intenté hacer gulp sass-watch en el símbolo del sistema. Después de eso obtuve la siguiente respuesta.

[18:18:32] Requiring external module babel-register
fs.js:27
const { Math, Object, Reflect } = primordials;
                                  ^

ReferenceError: primordials is not defined

He intentado esto antes de tragar sass-watch

npm -g install gulp-cli
Ramesh
fuente

Respuestas:

470

Llegué al mismo error. Sospecho que está utilizando el nodo 12 y el trago 3. Esa combinación no funciona: https://github.com/gulpjs/gulp/issues/2324

Una solución anterior de enero tampoco funciona: https://github.com/gulpjs/gulp/issues/2246

Solución: Actualice a Gulp 4 o cambie a un nodo anterior.

Hassan Hodges
fuente
20
Encontró el mismo problema con Khaos. Bajar el nodo a v11.15.0 hizo el truco.
Terje Norderhaug
44
Problema similar aquí usando el webshotpaquete de nodos. Sospecho que necesitan actualizar algo antes de que pueda continuar con el Nodo v12.
Jacob Morrison
69
Estoy usando nodo v12.1.0y trago, [email protected]pero no funciona
Most Wanted
32
Lo intenté con nodo v10.xy trago v3.x, luego la magia feliz
kuldipem
12
Recomiendo usar la solución npm-shrinkwrap.json publicada por Valentin: stackoverflow.com/a/58394828/2726785 , a pesar de que esta es la solución aceptada.
Erik Hansen
248

Encontramos el mismo problema al actualizar un proyecto heredado dependiendo [email protected]de Node.js 12.

Estas correcciones le permiten usar Node.js 12 [email protected]reemplazando graceful-fsa la versión 4.2.3.

Si su proyecto no se está trabajando activamente y usa npm

Crea un npm-shrinkwrap.jsonarchivo que contenga esto:

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

Confirma este npm-shrinkwrap.jsonarchivo. Y luego ejecute npm installlo que actualizará el npm-shrinkwrap.jsonarchivo.

Desafortunadamente, esta solución ya no funciona si usted npm installnuevamente. Vea las otras soluciones a continuación.

Si su proyecto está en desarrollo activo y usa hilo v1

Yarn v1 admite la resolución de un paquete a una versión definida . Necesita agregar una resolutionssección a su package.json:

{
  // Your current package.json contents
  "resolutions": {
    "graceful-fs": "4.2.3"
  }
}

Gracias @jazd por esta forma de resolver el problema.

Si su proyecto está en desarrollo activo y usa npm

Utilizando npm-force-resolutionsun script de preinstalación, puede obtener un resultado similar al de yarn v1. Necesita modificar su package.json de esta manera:

{
  // Your current package.json
  "scripts": {
    // Your current package.json scripts
    "preinstall": "npx npm-force-resolutions"
  },
  "resolutions": {
    "graceful-fs": "4.2.3"
  }
}

npm-force-resolutionsalterará el package-lock.jsonarchivo para establecerlo graceful-fsen la versión deseada antes de installque finalice.

Si está utilizando una costumbre .npmrcarchivo en su proyecto y en él aparece un proxy o un registro personalizado, necesita cambiar npx npm-force-resolutionsa npx --userconfig .npmrc npm-force-resolutionsporque a partir de ahora, npxno utiliza la carpeta actual .npmrcde archivos por defecto.

Origen del problema.

Este problema se debe al hecho de que [email protected] depende de graceful-fs@^3.0.0qué fsmódulo monkeypatches Node.js.

Esto solía funcionar con Node.js hasta la versión 11.15 (que es una versión de una rama de desarrollo y no debe usarse en producción).

graceful-fs@^4.0.0ya no tiene el fsmódulo monkeypatch Node.js , lo que lo hace compatible con Node.js> 11.15.

Tenga en cuenta que esta no es una solución perenne, pero ayuda cuando no tiene tiempo para actualizar gulp@^4.0.0.

Valentin
fuente
66
¡Wow esto es genial! No tenía ganas de revertir la instalación de mi nodo, por lo que esta es una solución perfecta.
dgo
@Valentin esto funcionó para mí, pero ¿cómo funcionó? Por lo que he leído, además de ser publicable, npm-shrinkwrap.json debería comportarse igual que package-lock.json. ¿Por qué no se comportan igual aquí? ¿Por qué se necesita npm-shrinkwrap.json para solucionar esto?
JordRoss
44
Esta solución es perfecta para esta situación particular: realmente debería ser la respuesta aceptada.
zerodevx
14
esta debería ser la respuesta aceptada
jtate
1
@Valentin cuando corro npm installpara regenerar package-lock.jsono npm-shrinkwrap.json, al parecer, no pudo bloquear estas dependencias. Después de volver a ejecutar npm install --no-save, el generado package-lock.jsontodavía indica npm para instalar las dependencias que faltan.
PuiMan Cheui
95

Utilice los siguientes comandos e instale el nodo v11.15.0 :

npm install -g n

sudo n 11.15.0

solucionará

ReferenceError: los primordiales no están definidos en el nodo

Remitido de @Terje Norderhaug @Tom Corelis responde.

Alphonse R. Dsouza
fuente
3
¡Trabajó para mi! Excelente respuesta He estado tratando de resolver esto por horas.
GlennFriesen
3
Brillante respuesta!
user1974753
2
¡Perfecto! Trabajó para mi.
Raja
2
Realmente me salvaste la vida. Gracias.
Trjade
66
npm install -gn en mi máquina (windows 64) produce un error: npm ERR! notsup Plataforma no compatible para [email protected]: quería {"os": "! win32", "arch": "any"} (actual: {"os": "win32", "arch": "x64"})
Daryl McCullough
45

Arreglalo en 1 minuto:

Solo sigue estos pasos . Estoy en Windows 10 y funcionó perfectamente para mí.

  1. En el mismo directorio donde ha package.jsoncreado un npm-shrinkwrap.jsonarchivo con los siguientes contenidos:
    {
      "dependencies": {
        "graceful-fs": {
            "version": "4.2.2"
         }
      }
    }
  1. Ejecuta npm install, y no te preocupes, se actualizará npm-shrinkwrap.jsoncon un montón de contenido.

  2. Ejecutar gulppara comenzar el proyecto.

Diego Fortes
fuente
1
Funciona como un encanto bajo win 10 / WSL - ¡Gracias!
opHASnoNAME
1
la respuesta que funciona como encanto
Adiii
1
Funcionó como un encanto en Ubuntu también.
Manoj - GT
1
¡Funciona bien en Win 10 pro! Gracias :)
elhef
1
¡Excelente! Estaba tratando de ejecutar el proyecto FilterBlend, pero recibí este maldito error. Después de actualizar a Gulp 4, recibí un error diferente (gulp.hasTask no es una función). Crear este archivo solucionó el problema.
Dennis Kassel
27

Use los siguientes comandos para instalar node v11.15.0y gulp v3.9.1:

npm install -g n

sudo n 11.15.0

npm install gulp@^3.9.1
npm install 
npm rebuild node-sass

Resolverá este problema:

ReferenceError: primordials is not defined in node
Cundong Zhang
fuente
1
Trabajó para mí, tuve que seguir todos los pasos. 👍
Jason
1
No use una rama NodeJS de corta duración (todos los números de versión impares como 9 y 11), use NodeJS 10.
Daniel Ruf
funcionó para mí gracias
Kapil soni
En serio, sigue todos los pasos.
Ele
El primer comando falla con EBADPLATFORM en Windows.
Ronan Paixão
22

Usando NVM para administrar qué versión de nodo estás usando, ejecutar los siguientes comandos me funcionó:

$ cd /to/your/project/
$ nvm install lts/dubnium
$ nvm use lts/dubnium
$ yarn upgrade # or `npm install`
kevnk
fuente
3
Siempre termino volviendo a esto.
nieve
3
No use una rama corta NodeJS (todos los números de versión impares como 9 y 11), use NodeJS 10. También use en 10lugar del nombre del código.
Daniel Ruf
1
Para Windows use nvm-windows .
Lupa
12

Gulp 3.9.1 no funciona con Node v12.xx, y si actualiza a Gulp 4.0.2, debe cambiar por completo gulpfile.js con la nueva sintaxis (Series y Parallels). Entonces, su mejor opción es bajar al Nodo V 11.xx, el 11.15.0 funcionó bien para mí. Simplemente usando el siguiente código en la terminal:

nvm install 11.15.0

nvm use 11.15.0 #just in case it didn't automatically select the 11.15.0 as the main node.

nvm uninstall 13.1.0

npm rebuild node-sass

¡Salud!

Aymen Yaseen
fuente
Después de esto obtengo el error: "/ c / Users / User / AppData / Roaming / npm / node: line 8: C: \ Users \ User \ AppData \ Roaming \ npm / node_modules / node / bin / node: No existe dicho archivo o directorio "
Ivan Topić
11

tenía el mismo error y finalmente arreglo que cuando se actualiza todos los paquetes y luego se menciona la misma versión del nodo de motor y la versión de la NGP en package.jsoncomo lo es en mi sistema de trabajo local.

 "engines": {
    "node": "10.15.3",
    "npm": "6.9.0"
 }

recibí este error al implementar en heroku.

para obtener más ayuda con Heroku

Ravi Anand
fuente
6

La degradación a nodo estable solucionó este problema para mí, ya que ocurrió después de actualizar al nodo 12

sudo n 10.16.0

Tom Corelis
fuente
3
Si intenta esto y obtiene el error: 'sudo: n: comando no encontrado', asegúrese de instalar nprimero con: 'npm install -g n'
AlmostPitt
Probé esto en Windows 10 (64 bits) y obtuve: - C: \ react-script-editor> npm install -gn npm ERR! código EBADPLATFORM npm ERR! notsup Plataforma no compatible para [email protected]: quería {"os": "! win32", "arch": "any"} (actual: {"os": "win32", "arch": "x64"}) npm ERR! notsup Sistema operativo válido:! win32 npm ERR! notsup Arco válido: cualquier npm ERR! notsup SO real: win32 npm ERR! notsup Actual Arch: x64
Nigel Price
6

TL: DR

Gulp 3.*no funciona en Node 12.*o superior. Tienes que degradar Node o actualizar Gulp.

Si tiene poco tiempo, baje el Nodo a v11. * O inferior; Si necesita funciones más nuevas y tiene tiempo para arreglar una carga de dependencias rotas, actualice Gulp a 4. * o superior.

Como otros ya han mencionado, Gulp 3.*no es compatible con Node 12o superior, por lo que tendrá que degradar su versión de Node ao 11.*inferior, O actualizar su Gulp a 4.0.

La mejor opción depende en última instancia de cuánto tiempo tenga, ya que la actualización de Gulp brinda los beneficios de los archivos Gulpfiles más limpios y el control incorporado sobre la ejecución de tareas en serie o en paralelo , pero también depende de que vuelva a escribir su archivo Gulpfile en una nueva sintaxis, y podría (leer: probablemente lo hará - ver el final de este comentario) causar conflictos con algunas dependencias.


Nodo de degradación

Esta es la opción más fácil y rápida. Especialmente si usa n o nvm , ya que le permiten una instalación muy rápida y cambiar entre versiones de Nodo.

Instalación de la versión Node en N

n 10.16.0

Instalación de la versión de nodo en NVM

nvm install 10.16.0

Una vez que haya hecho esto, es posible que deba reconstruir sus dependencias npm o, alternativamente, eliminar su node_modulescarpeta Y su package-lock.jsonarchivo y volver a instalar sus dependencias. Aunque si simplemente está volviendo a una versión de Nodo preexistente, probablemente debería estar bien.


Gulp de actualización

Como se mencionó anteriormente, esta es una tarea que requiere más tiempo, pero que podría traer beneficios a largo plazo. Por ejemplo, Node 12ahora ha introducido soporte nativo para módulos ES (detrás de un indicador experimental) y soporte completo en Node 13.

Es posible que necesite actualizar Node para usar eso, lo que le obliga a actualizar Gulp. O simplemente puede querer los beneficios de usar Gulp 4, ya que ofrece un control mejor y más eficiente sobre las tareas de escritura.

Ya hay una serie de artículos sobre esto, por lo que no profundizaré más en los detalles, pero para reiterar, este no es un trabajo rápido . Dependiendo del tamaño de su proyecto, puede ser necesario reescribir notablemente, y puede tener dependencias que se rompen. Si tiene poco tiempo, debe optar por simplemente degradar Node, al menos temporalmente.


Pero ya tengo Gulp 4, ¡y todavía no funciona!

Si, como yo, ya está usando Gulp 4+ (estaba usando Gulp 4.0.2, originalmente en el Nodo 10) y recientemente me actualicé (actualicé Node 13.8.0) si todavía tiene el problema, puede ser porque una dependencia depende de un versión anterior de Gulp, y eso se está quedando atrapado en la tubería.

En mi caso, gulp-combine-mqera una dependencia usando Gulp 3.9.*. Deshabilitar esta tarea en mi archivo de trago permitió que Gulp volviera a ejecutarse.

Si esto sucede, tiene algunas opciones: puede,

  1. Vaya sin el complemento si no es absolutamente necesario
  2. Encuentra una alternativa,
  3. Repara el complemento

No es necesario decir que si tiene varios complementos que dependen de una versión anterior de Gulp, especialmente si estos complementos son vitales para su aplicación, aquí es donde puede pasar una gran cantidad de tiempo adicional en la actualización de Gulp (de ahí las advertencias anteriores).

Si esto sucede, es mejor degradar Node, al menos hasta que se puedan emitir parches.

Oliver
fuente
4

Este error se debe a la nueva versión de Node (12) y a una versión anterior de gulp (menos de 4).

No se recomienda degradar el nodo y otras dependencias. Resolví esto actualizando el package.jsonarchivo obteniendo la última versión de todas las dependencias. Para esto, yo uso npm-check-updates. Es un módulo que actualiza package.jsoncon la última versión de todas las dependencias.

Referencia : https://www.npmjs.com/package/npm-check-updates

npm i -g npm-check-updates
ncu -u
npm install

En la mayoría de los casos, tendremos que actualizar el gulpfile.jsarchivo de la siguiente manera:

Referencia : https://fettblog.eu/gulp-4-parallel-and-series/#migration

Antes de:

gulp.task(
    'sass', function () {
        return gulp.src([sourcePath + '/sass/**/*.scss', "!" + sourcePath + "/sass/**/_*.scss"])

            ....

    }
);

Other config...

gulp.task(
    'watch', function () {
        gulp.watch(sourcePath + '/sass/**/*.scss', ['sass']);
    }
);

Después:

gulp.task('sass', gulp.series(function(done) {
    return gulp.src([sourcePath + '/sass/**/*.scss', "!" + sourcePath + "/sass/**/_*.scss"])

            ...

    done();
}));

Other config...

gulp.task(
    'watch', function () {
        gulp.watch(sourcePath + '/sass/**/*.scss', gulp.series('sass'));
    }
);
Rijo
fuente
Gran solución si no tienes archivos de tragos complejos. En mi caso, solo tuve que adaptar dos líneas por gulpfile.js. ¡Gracias por la breve guía de migración!
Tobias
3

Recibí este error en Windows 10. Resultó ser un perfil móvil itinerante dañado.

npm ERR! node v12.4.0
npm ERR! npm  v3.3.12

npm ERR! primordials is not defined
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:

Eliminar la C:\Users\{user}\AppData\Roaming\npmcarpeta solucionó mi problema.

usuario1754317
fuente
2
Esto arruinó todas mis dependencias de npm, lo siento.
Ashilon
3

Solo sigue estos pasos. Funcionó perfectamente con npm install ejecutándose varias veces o instalando cualquier otro módulo o incluso publicando proyectos en artefactos.

En el mismo directorio donde tiene package.json, cree un archivo npm-shrinkwrap.json con el siguiente contenido:

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

Ejecute npm install, y no se preocupe, actualizará npm-shrinkwrap.json con un montón de contenido. Eliminemos estas actualizaciones actualizando las opciones de scripts package.json .

"scripts": {
    "preshrinkwrap": "git checkout -- npm-shrinkwrap.json",
    "postshrinkwrap": "git checkout -- npm-shrinkwrap.json"
}

Ahora puede ejecutar npm install y su npm-shrinkwrap.json estará intacto y funcionará para siempre.

saumilsdk
fuente
2

Esto podría haber llegado tarde, pero para cualquiera que todavía esté interesado en mantener su Nodo v12 mientras usa el último trago ^ 4.0, siga estos pasos:

Actualice la interfaz de línea de comandos (solo por precaución) usando:

npm i gulp-cli -g

Agregue / actualice la gulpsección bajo dependencias de su package.json

"dependencies": {
  "gulp": "^4.0.0"
}

Eliminar tu package-lock.jsonarchivo

Eliminar tu node_modulescarpeta

Finalmente, ejecute npm ipara actualizar y recrear la nueva carpeta node_modules y el archivo package-lock.json con los parámetros correctos para Gulp ^ 4.0

npm i

Nota: Gulp.js 4.0 presenta los métodos series()y parallel()para combinar tareas en lugar de los métodos de matriz utilizados en Gulp 3, por lo que puede encontrar o no un error en su gulpfile.jsscript anterior.

Para obtener más información sobre la aplicación de estas nuevas funciones, este sitio realmente le ha hecho justicia: https://www.sitepoint.com/how-to-migrate-to-gulp-4/

( Si ayuda, por favor deje un golpe )

Sab
fuente
¿Qué es la gulp-clide? Seguí tus pasos y conseguí que todo funcionara inicialmente; pero luego lo desinstalé gulp-cli(ya que no vi dónde se estaba usando) y todo funcionó. Sin embargo, ¡gracias por la respuesta, porque estoy funcionando nuevamente con node v12.9.1y Gulp 4.0.2!
MuffinTheMan
Me alegra que haya ayudado. gulp-clies la utilidad de línea de comando. Asegura la correcta instalación de gulp Como puede ver en los pasos de instalación de gulp aquí: gulpjs.com/docs/en/getting-started/quick-start
Sab
2

Solucioné este problema en Windows 10 desinstalando el nodo de Agregar o quitar programas -> Node.js

Luego instalé la versión 11.15.0 de https://nodejs.org/download/release/v11.15.0/

Elija node-v11.15.0-x64.msi si está ejecutando Windows de 64 bits.

Robar
fuente
2

Gulp está haciendo un problema con Nodejs versión 11 y superior. Desinstale la versión actual de su nodo y vuelva a instalar la v10.15.1 aquí hay un enlace para esa versión. Esto me ayuda y también resolverá su problema.

https://nodejs.org/download/release/v10.15.1/

Farhan Ahmed
fuente
2

Me enfrenté al mismo problema. Lo que probé y funcionó para mí:

  1. Verifique la versión de NODE y GULP (la combinación de nodo v12 y trago menor que v4 no funciona)

  2. Disminuyo la versión de NPM por:

    • sudo NPM install -gn
    • sudo n 10.16.0

Funcionó bien, luego solo siga las instrucciones de su consola.

kamni jaiswal
fuente
1

Para aquellos que lo están usando yarn.

yarn global add n
n 11.15.0
yarn install # have to install again
Xiao Peng - ZenUML.com
fuente
No use una rama NodeJS de corta duración (todos los números de versión impares como 9 y 11), use NodeJS 10.
Daniel Ruf
0

Para cualquiera que tenga el mismo error por el mismo motivo en ADOS CI Build:

Esta pregunta fue la primera que encontré al buscar ayuda. Tengo una tubería de compilación de ADOS CI donde se usa la primera tarea del instalador de herramientas Node.js para instalar Node. Luego, la tarea npm se usa para instalar gulp (npm install -g gulp). Luego, la siguiente tarea Gulp ejecuta default-task desde gulpfile.js. Hay algunas cosas gulp-sass en él.

Cuando cambié la herramienta Node.js para instalar el último nodo 12.x en lugar de uno anterior y la última versión de Gulp era 4.0.2. El resultado fue el mismo error que se describe en la pregunta.

Lo que funcionó para mí en este caso fue degradar node.js a la última versión 11.x como ya lo sugirieron Alphonse R. Dsouza y Aymen Yaseen. En este caso, sin embargo, no es necesario usar ningún comando que sugieran, sino simplemente configurar la especificación de la versión del instalador de la herramienta Node.js a la última versión del Nodo desde 11.x.

ingrese la descripción de la imagen aquí

La versión exacta de Node.js que se instaló y funciona es 11.15.0. No tuve que degradar el Gulp.

Lupa
fuente
0

Llegué a este error después de actualizar mi nodo a la versión 12, que no funciona con Gulp 3.9.1. Con respecto al hecho de que mi gulpfile.js no era tan complejo, decidí actualizar a Gulp 4 usando este artículo , funcionó bien y fue mucho más fácil de lo que pensaba.

Mojtaba
fuente
0

Tienes dos opciones aquí

  1. Mejora a tragar 4 o bien
  2. degradar a una versión anterior del nodo.
Milan R Dhameliya
fuente
0

Esto se debe a la cuestión de compatibilidad entre nodey gulpen su sistema. Bajar de nodecategoría o actualizar el gulpsolucionará este problema.

sudo npm i -g n
sudo n 11.15.0

Intente eliminar la node_modulescarpeta y el package-lock.jsonarchivo e instalarlo nuevamente usando el npm icomando si aún no funciona.

Rijosh
fuente
0

Lo que funcionó para mí fue usar python2 durante la instalación de npm.

> npm install --python=~/venv/bin/python
Zubin
fuente
0

Como también recibimos este error cuando usamos el paquete s3 NPM. Entonces, el problema es con el paquete graceful-fs, necesitamos actualizarlo. Está funcionando bien en 4.2.3.

Tan solo mire qué paquete NPM está mostrando en el registro de registros y actualice el graceful-fs en consecuencia a 4.2.3.

Sharma Manish
fuente
0

También recibí un error en el Nodo 12/13 con Gulp 3, moverme al Nodo 11 funcionó.

usuario3663323
fuente
0

Resuelto por degradar la versión de Node.js 12.14.0a 10.18.0y volver a instalar node_modules.

Artem Luzhanovskyi
fuente
0

Si está intentando instalar semantic-uiy se produce el siguiente error, intente descargar la última versión del nodo js(13.5.0)con las últimas funciones, desde Node.js.org. Además, en lugar de intentar la instalación semántica de NPM, simplemente debe agregar el enlace (que puede encontrar desde el enlace de cdnjs al encabezado de su index.htmlarchivo. ¡Mucha suerte!

Haiqa
fuente
El ejemplo de código sería una gran adición aquí.
HR y
-1

Pasos para solucionar el problema: -

He solucionado el problema con los siguientes pasos: -

  1. Instalar NVM
  2. Lts / dubnium instalado utilizando el comando " nvm install lts / dubnium "
  3. Use lts / dubnium usando el comando " nvm install lts / dubnium "

Ahora puedes tragar el despliegue

Someshver Thakur
fuente
1
Esta es una trampa inexacta de la respuesta de @kevink
Z4-
-1

Te sugiero que primero te asegures de que la instalación de NPM no sea tu problema. Luego rebajas las versiones de nodo y trago. Usé el nodo 10.16.1 y trago 3.9.1.

Para rebajar tu trago puedes intentar

npm install gulp@^3.9.1
Anjasmara Dwi.S
fuente