Come correggere ReferenceError: primordials non è definito nel nodo


367

Ho installato i moduli nodo con npm install, quindi ho provato a eseguire gulp sass-watch nel prompt dei comandi. Successivamente ho ottenuto la risposta di seguito.

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

ReferenceError: primordials is not defined

Ho provato questo prima di Gulp Sass-Watch

npm -g install gulp-cli

Risposte:


469

Ho colpito lo stesso errore. Sospetto che tu stia utilizzando il nodo 12 e gulp 3. Quella combinazione non funziona: https://github.com/gulpjs/gulp/issues/2324

Una soluzione alternativa precedente di gennaio non funziona neanche: https://github.com/gulpjs/gulp/issues/2246

Soluzione: eseguire l'aggiornamento a gulp 4 o eseguire il downgrade a un nodo precedente.


20
Incontrato lo stesso problema con Khaos. Il downgrade del nodo alla v11.15.0 ha funzionato.
Terje Norderhaug

4
Problema simile qui usando il webshotpacchetto del nodo. Ho il sospetto che debbano aggiornare qualcosa prima di poter procedere con il Nodo v12.
Jacob Morrison,

69
Sto usando node v12.1.0e gulp gulp@4.0.2ma non funziona
Most Wanted

32
Ho provato con node v10.xe gulp v3.x, poi la magia è avvenuta
kuldipem il

12
Consiglio di utilizzare la soluzione npm-shrinkwrap.json pubblicata da Valentin: stackoverflow.com/a/58394828/2726785 , anche se questa è la soluzione accettata.
Erik Hansen,

248

Abbiamo riscontrato lo stesso problema durante l'aggiornamento di un progetto legacy a seconda gulp@3.9.1di Node.js 12.

Queste correzioni consentono di utilizzare Node.js 12 eseguendo l' gulp@3.9.1override graceful-fsalla versione 4.2.3.

Se il tuo progetto non sta lavorando attivamente e usi npm

Crea un npm-shrinkwrap.jsonfile contenente questo:

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

Salva questo npm-shrinkwrap.jsonfile. E quindi esegui npm installche aggiornerà il npm-shrinkwrap.jsonfile.

Sfortunatamente, questa soluzione non funziona più se di npm installnuovo. Vedi le altre soluzioni di seguito.

Se il tuo progetto è in fase di sviluppo attivo e usi il filo v1

Yarn v1 supporta la risoluzione di un pacchetto in una versione definita . Devi aggiungere una resolutionssezione al tuo package.json:

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

Grazie @jazd per questo modo di risolvere il problema.

Se il tuo progetto è in fase di sviluppo attivo e usi npm

Usando npm-force-resolutionscome script preinstall, puoi ottenere un risultato simile a quello con filato v1. Devi modificare il tuo package.json in questo modo:

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

npm-force-resolutionsmodificherà il package-lock.jsonfile da impostaregraceful-fs sulla versione desiderata prima del completamento install.

Se stai utilizzando un .npmrcfile personalizzato nel tuo progetto e contiene un proxy o un registro personalizzato, devi passare npx npm-force-resolutionsa npx --userconfig .npmrc npm-force-resolutionsperché al momento,npx non utilizzare la cartella corrente .npmrcdi file di default.

Origine del problema

Questo problema deriva dal fatto che gulp@3.9.1 dipende da graceful-fs@^3.0.0quali monkeypatch Node.jsfs modulo .

In passato funzionava con Node.js fino alla versione 11.15 (che è una versione di un ramo di sviluppo e non dovrebbe essere utilizzata in produzione).

graceful-fs@^4.0.0non monkeypatch il fsmodulo Node.js , il che lo rende compatibile con Node.js> 11.15.

Nota che questa non è una soluzione perenne ma aiuta quando non hai tempo di aggiornare gulp@^4.0.0.


6
Wow - è fantastico! Non avevo voglia di ripristinare l'installazione del mio nodo, quindi questa è una soluzione perfetta.
fatto il

@Valentin ha funzionato per me, ma come ha funzionato? Da quello che ho letto, oltre ad essere pubblicabile, npm-shrinkwrap.json dovrebbe comportarsi come pacchetto-lock.json. Perché non si comportano allo stesso modo qui? Perché è necessario npm-shrinkwrap.json per risolvere questo problema?
JordRoss,

4
Questa soluzione è perfetta per questa particolare situazione: dovrebbe davvero essere la risposta accettata.
zerodevx,

14
questa dovrebbe essere la risposta accettata
jtate

1
@Valentin quando corro npm installper rigenerarmi package-lock.jsono npm-shrinkwrap.json, sembra non riuscire a bloccare queste dipendenze. Dopo aver eseguito nuovamente npm install --no-save, il generato package-lock.jsonindica ancora npm per installare le dipendenze mancanti.
PuiMan Cheui,

95

Utilizzare i seguenti comandi e installare il nodo v11.15.0 :

npm install -g n

sudo n 11.15.0

risolverà

ReferenceError: primordials non è definito nel nodo

Riferito dalle risposte di @Terje Norderhaug @Tom Corelis.


3
Ha funzionato per me! Risposta eccellente. Ho cercato di capirlo per ore.
GlennFriesen,

3
Risposta brillante!
user1974753,

2
Perfetto! Ha funzionato per me.
Raja,

2
Davvero, mi hai salvato la vita. Grazie.
Trjade

6
npm install -gn sulla mia macchina (Windows 64) produce un errore: npm ERR! notsup Piattaforma non supportata per n@6.1.3: wanted {"os": "! win32", "arch": "any"} (corrente: {"os": "win32", "arch": "x64"})
Daryl McCullough, il

45

Risolvilo in 1 minuto:

Segui questi passaggi . Sono su Windows 10 e ha funzionato perfettamente per me!

  1. Nella stessa directory in cui è stato package.jsoncreato un npm-shrinkwrap.jsonfile con i seguenti contenuti:
    {
      "dependencies": {
        "graceful-fs": {
            "version": "4.2.2"
         }
      }
    }
  1. Esegui npm installe non preoccuparti, verrà aggiornato npm-shrinkwrap.jsoncon un sacco di contenuti.

  2. Esegui gulpper avviare il progetto.


1
Funziona come un incantesimo con Win 10 / WSL - Grazie!
opHASnoNAME

1
la risposta che funziona come un incantesimo
Adiii

1
Ha funzionato come un fascino anche in Ubuntu.
Manoj - GT,

1
Funziona bene su Win 10 pro! Grazie :)
elhef

1
Grande! Stavo cercando di avviare il progetto FilterBlend, ma ho ottenuto questo maledetto errore. Dopo l'aggiornamento a gulp 4 ho ricevuto un errore diverso (gulp.hasTask non è una funzione). La creazione di questo file ha aggirato il problema.
Dennis Kassel,

27

Utilizzare i seguenti comandi per installare node v11.15.0e 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

Risolverà questo problema:

ReferenceError: primordials is not defined in node

1
Ha funzionato per me, ha dovuto seguire tutti i passaggi. 👍
Jason,

1
Non utilizzare un ramo NodeJS di breve durata (tutti i numeri di versione dispari come 9 e 11), utilizzare NodeJS 10.
Daniel Ruf

ha funzionato per me grazie
Kapil soni il

Seriamente, segui tutti i passaggi.
Ele

Il primo comando ha esito negativo con EBADPLATFORM su Windows.
Ronan Paixão,

22

Utilizzo di NVM per gestire la versione del nodo in uso, eseguendo i seguenti comandi ha funzionato per me:

$ cd /to/your/project/
$ nvm install lts/dubnium
$ nvm use lts/dubnium
$ yarn upgrade # or `npm install`

3
Finisco sempre per tornare a questo.
neve,

3
Non utilizzare un ramo NodeJS di breve durata (tutti i numeri di versione dispari come 9 e 11), utilizzare NodeJS 10. Utilizzare anche al 10posto del nome in codice.
Daniel Ruf,

1
Per Windows usa nvm-windows .
Lupa,

12

Gulp 3.9.1 non funziona con il nodo v12.xx e, se si aggiorna a Gulp 4.0.2, è necessario modificare completamente gulpfile.js con la nuova sintassi (serie e paralleli). Quindi la tua scommessa migliore è il downgrade al Nodo V 11.xx, l'11.15.0 ha funzionato bene per me. Semplicemente usando il seguente codice nel terminale:

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

Saluti!


Dopo questo ottengo l'errore: "/ c / Users / User / AppData / Roaming / npm / node: riga 8: C: \ Users \ User \ AppData \ Roaming \ npm / node_modules / node / bin / node: nessun file o directory "
Ivan Topić il

11

aveva lo stesso errore e, infine, correzione che dopo l'aggiornamento di tutti i pacchetti e poi menzionato la stessa versione del motore di nodo e la versione NPM in package.jsonquanto è in mio sistema di lavoro locale.

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

ho ricevuto questo errore durante la distribuzione su heroku.

per ulteriori informazioni sul supporto heroku


6

Il downgrade al nodo stable ha risolto questo problema per me, poiché si è verificato dopo l'aggiornamento al nodo 12

sudo n 10.16.0


3
Se provi questo e ottieni l'errore: 'sudo: n: comando non trovato', assicurati di installare nprima con: 'npm install -g n'
AlmostPitt

Provato su Windows 10 (64 bit) e ottenuto: - C: \ reazioni-script-editor> npm install -gn npm ERR! codice EBADPLATFORM npm ERR! notsup Piattaforma non supportata per n@6.1.0: wanted {"os": "! win32", "arch": "any"} (corrente: {"os": "win32", "arch": "x64"}) npm ERR! notsup Sistema operativo valido:! win32 npm ERR! notsup Arco valido: qualsiasi ERR npm! notsup Sistema operativo attuale: win32 npm ERR! notsup Arco reale: x64
Prezzo Nigel

6

TL: DR

Gulp 3.*non funziona su Node 12.*o superiore. Devi eseguire il downgrade di Node o aggiornare Gulp.

Se hai poco tempo, esegui il downgrade del nodo a v11. * O inferiore; se hai bisogno di nuove funzionalità e hai il tempo di riparare un carico di dipendenze rotte, aggiorna Gulp a 4. * o superiore!

Come altri hanno già accennato, Gulp 3.*non è supportato su Node 12o versioni successive, quindi dovrai eseguire il downgrade della versione del tuo nodo 11.*o precedente, o aggiornare Gulp a 4.0.

L'opzione migliore dipende in definitiva da quanto tempo hai, poiché l'aggiornamento di Gulp porta benefici di gulpfile più puliti e controllo integrato sull'avvio di attività in serie o in parallelo , ma si basa anche sul fatto che riscrivi il tuo gulpfile in una nuova sintassi, e potrebbe (leggi: probabilmente - vedrai la fine di questo commento) causare conflitti con alcune dipendenze.


Nodo di downgrade

Questa è l'opzione più semplice e veloce. Soprattutto se usi n o nvm , in quanto ti consentono di installare molto rapidamente e passare da una versione all'altra del nodo.

Installazione della versione del nodo su N

n 10.16.0

Installazione della versione del nodo su NVM

nvm install 10.16.0

Una volta fatto questo, potrebbe essere necessario ricostruire le dipendenze npm o in alternativa rimuovere sia la node_modulescartella che il package-lock.jsonfile e reinstallare le dipendenze. Tuttavia, se stai semplicemente ripristinando una versione di nodo preesistente, probabilmente dovresti andare bene.


Aggiornamento di Gulp

Come accennato in precedenza, questo è un compito che richiede più tempo, ma potrebbe portare benefici a lungo termine. Ad esempio, Node 12ha ora introdotto il supporto nativo per i moduli ES (dietro un flag sperimentale) e il supporto completo in Node 13.

Potrebbe essere necessario aggiornare Node per usarlo, costringendo l'utente ad aggiornare Gulp. Oppure potresti semplicemente desiderare i vantaggi dell'utilizzo di Gulp 4, in quanto offre un controllo migliore e più efficiente sulle attività di scrittura.

Ci sono già diversi articoli su questo, quindi non approfondirò ulteriormente i dettagli, ma per ribadire: questo non è un lavoro veloce . A seconda delle dimensioni del progetto, potrebbero essere necessarie alcune importanti riscritture e potresti avere dipendenze che si interrompono. Se hai poco tempo a disposizione, dovresti optare per il downgrade del nodo, almeno temporaneamente.


Ma ho già Gulp 4 e ancora non funziona!

Se, come me, stai già utilizzando Gulp 4+ (stavo usando Gulp 4.0.2, originariamente sul Nodo 10) e hai recentemente aggiornato (ho eseguito l'upgrade a Node 13.8.0) se stai ancora riscontrando il problema, potrebbe essere perché una dipendenza si basa su un versione precedente di Gulp, che viene catturato dalla pipeline.

Nel mio caso, gulp-combine-mqera una dipendenza usando Gulp3.9.* . La disabilitazione di questa attività nel mio gulpfile ha permesso di eseguire nuovamente Gulp.

In questo caso, hai alcune opzioni: puoi,

  1. Vai senza il plugin se non è assolutamente necessario
  2. Trova un'alternativa,
  3. Correggi il plug-in

Inutile dire che se hai diversi plugin che si basano su una versione precedente di Gulp - specialmente se questi plugin sono vitali per la tua applicazione - è qui che può esserci un enorme ulteriore periodo di tempo speso per l'aggiornamento di Gulp (quindi le avvertenze sopra).

In questo caso, è consigliabile eseguire il downgrade del nodo, almeno fino a quando non è possibile emettere patch.


4

Questo errore è dovuto al nuova versione di Node (12) e a una vecchia versione di gulp (meno di 4).

Il downgrade del nodo e altre dipendenze non è raccomandato. Ho risolto questo aggiornamentopackage.json file recuperando l'ultima versione di tutte le dipendenze. Per questo, io uso npm-check-updates. È un modulo che aggiorna il package.jsoncon l'ultima versione di tutte le dipendenze.

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

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

Nella maggior parte dei casi, dovremo aggiornare gulpfile.jsanche il seguente:

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

Prima:

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']);
    }
);

Dopo:

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'));
    }
);

Ottima soluzione se non si dispone di file gulp complessi. Nel mio caso, ho dovuto adattare solo due righe per gulpfile.js. Grazie per la breve guida alla migrazione!
Tobias,

3

Stavo ottenendo questo errore su Windows 10. Si è rivelato essere un profilo di roaming corrotto.

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:

L'eliminazione della C:\Users\{user}\AppData\Roaming\npmcartella ha risolto il mio problema.


2
Questo ha incasinato tutte le mie dipendenze da npm, scusa.
ashilon,

3

Segui questi passaggi. Ha funzionato perfettamente con l'installazione di npm in esecuzione più volte o l'installazione di qualsiasi altro modulo o persino la pubblicazione di progetti su elementi artificiali.

Nella stessa directory in cui hai package.json crea un file npm-shrinkwrap.json con il seguente contenuto:

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

Esegui npm install e non preoccuparti, aggiornerà npm-shrinkwrap.json con un sacco di contenuti. Sbarazziamoci di questi aggiornamenti aggiornando le opzioni degli script package.json .

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

Ora puoi eseguire npm install e il tuo npm-shrinkwrap.json sarà intatto e funzionerà per sempre.


2

Questo potrebbe essere arrivato in ritardo, ma per chiunque sia ancora interessato a mantenere il proprio Nodo v12 mentre utilizza l'ultimo gulp ^ 4.0, segui questi passaggi:

Aggiorna l'interfaccia della riga di comando (solo per precauzione) utilizzando:

npm i gulp-cli -g

Aggiungi / Aggiorna la gulpsezione sotto dipendenze di package.json

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

Elimina il tuo package-lock.jsonfile

Elimina la tua node_modulescartella

Infine, esegui npm iper aggiornare e ricreare la nuovissima cartella node_modules e il file package-lock.json con i parametri corretti per Gulp ^ 4.0

npm i

Nota Gulp.js 4.0 introduce i metodi series()e parallel()per combinare le attività anziché i metodi di matrice utilizzati in Gulp 3, pertanto è possibile che si verifichi o meno un errore nel vecchio gulpfile.jsscript.

Per saperne di più sull'applicazione di queste nuove funzionalità, questo sito ha reso davvero giustizia ad esso: https://www.sitepoint.com/how-to-migrate-to-gulp-4/

( Se aiuta, per favore lascia un colpo )


A cosa serve gulp-cli? Ho seguito i tuoi passi e tutto ha funzionato inizialmente; ma poi ho disinstallato gulp-cli(poiché non vedevo dove fosse utilizzato) e tutto funzionava ancora. Grazie per la risposta, però, perché sono di nuovo attivo e funzionante con node v12.9.1e Gulp 4.0.2!
MuffinTheMan

Sono contento che abbia aiutato. gulp-cliè l'utilità della riga di comando. Garantisce la corretta installazione di gulp Come puoi vedere nei passaggi di installazione di gulp qui: gulpjs.com/docs/en/getting-started/quick-start
Sab



2

Ho affrontato lo stesso problema. Cosa ho provato e lavorato per me:

  1. Controlla la versione di NODE e GULP (la combinazione di nodo v12 e gulp meno di v4 non funziona)

  2. Eseguo il downgrade della versione NPM di:

    • sudo NPM install -gn
    • sudo n 10.16.0

Ha funzionato bene, quindi basta seguire le istruzioni della tua console.



1

Per coloro che stanno usando yarn.

yarn global add n
n 11.15.0
yarn install # have to install again

Non utilizzare un ramo NodeJS di breve durata (tutti i numeri di versione dispari come 9 e 11), utilizzare NodeJS 10.
Daniel Ruf

0

Per chiunque abbia lo stesso errore per lo stesso motivo in ADOS CI Build:

Questa domanda è stata la prima che ho trovato in cerca di aiuto. Ho una pipeline di build CI ADOS in cui viene utilizzata la prima attività di installazione dello strumento Node.js per installare Node. Quindi l'attività npm viene utilizzata per installare gulp (npm install -g gulp). Quindi la seguente attività Gulp esegue default-task da gulpfile.js. Ci sono alcune cose gulp-sass.

Quando ho cambiato lo strumento Node.js per installare il nodo 12.x più recente anziché uno precedente e l'ultima versione di gulp era 4.0.2. Il risultato è stato lo stesso errore descritto nella domanda.

Ciò che ha funzionato per me in questo caso è stato il downgrade di node.js all'ultima versione 11.x come già suggerito da Alphonse R. Dsouza e Aymen Yaseen. In questo caso, tuttavia, non è necessario utilizzare alcun comando suggerito, ma è sufficiente impostare la specifica della versione del programma di installazione dello strumento Node.js sull'ultima versione del nodo da 11.x.

inserisci qui la descrizione dell'immagine

La versione esatta di Node.js che è stata installata e funziona era l'11.15.0. Non ho dovuto effettuare il downgrade di Gulp.


0

Ho riscontrato questo errore dopo aver aggiornato il mio nodo alla versione 12, che non funziona con Gulp 3.9.1. Per quanto riguarda il fatto che il mio gulpfile.js non fosse così complesso, ho deciso di passare a Gulp 4 usando questo articolo , è andato bene ed è stato molto più facile di quanto pensassi.


0

Hai due opzioni qui

  1. Aggiorna a gulp 4 oppure Else
  2. eseguire il downgrade a una versione precedente del nodo.

0

Questo perché il problema di compatibilità tra nodee gulpnel tuo sistema. Il downgrade nodeo l'aggiornamento del gulprisolveranno questo problema.

sudo npm i -g n
sudo n 11.15.0

Prova a rimuovere la node_modulescartella e il package-lock.jsonfile e a installarlo di nuovo usando il npm icomando se non funziona ancora.


0

Quello che ha funzionato per me è stato usare python2 durante l'installazione di npm.

> npm install --python=~/venv/bin/python

0

Dato che otteniamo anche questo errore quando utilizziamo il pacchetto NPM di s3. Quindi il problema è con il pacchetto graceful-fs che dobbiamo prenderlo aggiornato. Funziona benissimo su 4.2.3.

Quindi basta guardare in quale pacchetto NPM sta mostrando nei log di traccia e aggiornare i graceful-fs di conseguenza alla 4.2.3.


0

Inoltre stavo ottenendo un errore sul nodo 12/13 con Gulp 3, passando al nodo 11 funzionava.



0

Se stai tentando di installare semantic-uie si verifica il seguente errore, prova a scaricare l'ultima versione del nodo js(13.5.0)con le ultime funzionalità, da Node.js.org, inoltre invece di provare l'installazione semantica di NPM devi solo aggiungere il link (che puoi trovare dal link cdnjs all'intestazione del tuo index.htmlfile. Buona fortuna!


L'esempio di codice sarebbe un'ottima aggiunta qui.
UR e

-1

I passaggi per risolvere il problema: -

Ho risolto il problema con i seguenti passaggi: -

  1. Installazione di NVM
  2. Installato lts / dubnium usando il comando " nvm install lts / dubnium "
  3. Usa lts / dubnium usando il comando " nvm install lts / dubnium "

Ora puoi gulp deploy


1
Questa è una copia imprecisa della risposta di @kevink
Z4-

-1

Ti suggerisco innanzitutto di assicurarti che l' installazione di NPM non sia il tuo problema. Quindi esegui il downgrade del nodo e gulp versioni. Ho usato il nodo 10.16.1 e gulp 3.9.1.

Per eseguire il downgrade del tuo sorso puoi provare

npm install gulp@^3.9.1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.