web-dev-qa-db-fra.com

Comment réparer ReferenceError: les primordiaux ne sont pas définis dans le nœud

J'ai installé des modules de noeud par npm install, puis j'ai essayé de faire gulp sass-watch dans l'invite de commande. Après cela, j'ai reçu la réponse ci-dessous.

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

ReferenceError: primordials is not defined

J'ai essayé avant de gorger sass-watch

npm -g install gulp-cli
297
Ramesh

J'ai touché la même erreur. Je soupçonne que vous utilisez le nœud 12 et gulp 3. Cette combinaison ne fonctionne pas: https://github.com/gulpjs/gulp/issues/2324

Une solution de contournement précédente de janvier ne fonctionne pas non plus: https://github.com/gulpjs/gulp/issues/2246

Solution: effectuez une mise à niveau vers gulp 4 ou rétrogradez vers un nœud antérieur.

316
Hassan Hodges

Nous avons rencontré le même problème lors de la mise à jour d'un projet hérité en fonction de [email protected] Vers Node.js 12.

Ces correctifs vous permettent d'utiliser Node.js 12 avec [email protected] En remplaçant graceful-fs Par la version 4.2.3.

Si votre projet n'est pas activement travaillé et que vous utilisez npm

Créez un fichier npm-shrinkwrap.json contenant ceci:

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

Validez ce fichier npm-shrinkwrap.json. Ensuite, exécutez npm install Qui mettra à jour le fichier npm-shrinkwrap.json.

Malheureusement, cette solution ne fonctionne plus si vous npm install Recommencez. Voir les autres solutions ci-dessous.

Si votre projet est en développement actif et que vous utilisez Yarn v1

Yarn v1 prend en charge la résolution d'un package dans une version définie . Vous devez ajouter une section resolutions à votre package.json:

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

Merci @ jazd pour cette façon de résoudre le problème.

Si votre projet est en développement actif et que vous utilisez npm

En utilisant npm-force-resolutions comme script de préinstallation, vous pouvez obtenir un résultat similaire à celui de Yarn v1. Vous devez modifier votre package.json de cette façon:

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

npm-force-resolutions Modifiera le fichier package-lock.json Pour définir graceful-fs Sur la version souhaitée avant que le install soit terminé.

Si vous utilisez un fichier .npmrc Personnalisé dans votre projet et qu'il contient un proxy ou un registre personnalisé, vous devez remplacer npx npm-force-resolutions Par npx --userconfig .npmrc npm-force-resolutions Car pour l'instant, npx n'utilise pas le dossier courant .npmrc par défaut.

Origine du problème

Ce problème provient du fait que [email protected]dépend de graceful-fs@^3.0.0 Qui monkeypatches Node.js fs module.

Cela fonctionnait avec Node.js jusqu'à la version 11.15 (qui est un version d'une branche de développement et ne devrait pas être utilisé en production).

graceful-fs@^4.0.0 ne monkeypatch plus le module Node.js fs, ce qui le rend compatible avec Node.js> 11.15.

Notez que ce n'est pas une solution pérenne mais cela aide lorsque vous n'avez pas le temps de passer à gulp@^4.0.0.

89
Valentin

Utilisez les commandes suivantes et installez noeud v11.15.:

npm install -g n

Sudo n 11.15.0

va résoudre

ReferenceError: les primordiaux ne sont pas définis dans le nœud

Référé de @Terje Norderhaug @Tom Corelis répond.

77
Alphonse R. Dsouza

Utilisez les commandes suivantes pour installer node v11.15.0 et 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

Résoudra ce problème:

ReferenceError: primordials is not defined in node
21
Cundong Zhang

En utilisant NVM pour gérer la version de nœud que vous utilisez, l'exécution des commandes suivantes a fonctionné pour moi:

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

a eu la même erreur et a finalement corrigé cela lors de la mise à jour de tous les packages, puis a mentionné la même version du moteur de noeud et la version npm dans package.json comme c'est le cas dans mon système de travail local.

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

j'obtenais cette erreur lors du déploiement sur Heroku.

pour plus de contrôle support herok

11
Ravi Anand

Gulp 3.9.1 ne fonctionne pas avec Node v12.xx, et si vous passez à Gulp 4.0.2, vous devez changer complètement gulpfile.js avec la nouvelle syntaxe (Series & Parallels) . Donc, votre meilleur pari est de revenir à Node V 11.xx, le 11.15.0 a bien fonctionné pour moi. En utilisant simplement le code suivant dans le 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

À votre santé!

9
Aymen Yaseen

La rétrogradation vers le nœud stable a résolu ce problème pour moi, car il s'est produit après la mise à niveau vers le nœud 12

Sudo n 10.16.0

6
Tom Corelis

J'obtenais cette erreur sur Windows 10. Il s'est avéré être un profil d'itinérance corrompu.

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:

Suppression du C:\Users\{user}\AppData\Roaming\npm le dossier a résolu mon problème.

3
user1754317

Gulp pose problème avec Nodejs version 11 et supérieure. Désinstallez votre version actuelle du nœud et réinstallez la v10.15.1 ici est le lien pour cette version. Cela m'aide et résoudra également votre problème.

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

2
Farhan Ahmed

Cela est peut-être arrivé en retard, mais pour ceux qui souhaitent toujours conserver leur Node v12 lors de l'utilisation de la dernière version de gulp ^ 4.0, procédez comme suit:

Mettez à jour l'interface de ligne de commande (juste par précaution) en utilisant:

npm i gulp-cli -g

Ajoutez/mettez à jour le gulp sous la section des dépendances de votre package.json

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

Supprimez votre fichier package-lock.json

Supprimez votre dossier node_modules

Enfin, exécutez npm i Pour mettre à niveau et recréer le tout nouveau dossier node_modules et le fichier package-lock.json avec les paramètres corrects pour Gulp ^ 4.0

npm i

Remarque Gulp.js 4.0 présente les méthodes series() et parallel() pour combiner les tâches au lieu des méthodes de tableau utilisées dans Gulp 3, et donc vous pouvez ou non rencontrer une erreur dans votre ancien script gulpfile.js.

Pour en savoir plus sur l'application de ces nouvelles fonctionnalités, cela site a vraiment rendu justice à cela: https://www.sitepoint.com/how-to-migrate-to-gulp-4 /

( Si cela aide, veuillez laisser un coup de poing )

2
Sab

TL: DR

Gulp 3.* ne fonctionne pas sur Node 12.* ou au-dessus. Vous devez rétrograder Node ou mettre à niveau Gulp.

Si vous manquez de temps, rétrogradez Node vers v11. * Ou ci-dessous; si vous avez besoin de fonctionnalités plus récentes et avez le temps de corriger éventuellement une charge de dépendances brisées, mettez à niveau Gulp vers 4. * ou au dessus!

Comme d'autres l'ont déjà mentionné, Gulp 3.* n'est pas pris en charge sur Node 12 ou supérieur, vous devrez donc rétrograder votre Node version to 11.* ou inférieur, OR mettez à niveau votre Gulp vers 4.0.

La meilleure option dépend en fin de compte du temps dont vous disposez, car la mise à niveau de Gulp apporte des avantages de fichiers gulp plus propres et un contrôle intégré sur l'exécution des tâches série ou parallèle , mais dépend également de la réécriture de votre gulpfile à une nouvelle syntaxe, et pourrait (lire: probablement - voir la fin de ce commentaire) provoque des conflits avec certaines dépendances.


Nœud de déclassement

C'est l'option la plus simple et la plus rapide. Surtout si vous utilisez n ou nvm , car ceux-ci vous permettent une installation très rapide et basculez entre les versions Node.

Installation de Node version on N

n 10.16.0

Installation de la version de Noeud sur NVM

nvm install 10.16.0

Une fois que vous avez fait cela, vous mai devez reconstruire vos dépendances npm ou bien supprimez vos node_modules dossier ET votre package-lock.json fichier et réinstaller vos dépendances. Cependant, si vous revenez simplement à une version Node Node $ ===) préexistante, cela devrait probablement aller.


Mise à niveau de Gulp

Comme mentionné ci-dessus, il s'agit d'une tâche plus longue, mais qui pourrait apporter des avantages à long terme. Par exemple, Node 12 a désormais introduit la prise en charge native des modules ES (derrière un drapeau expérimental) et une prise en charge complète dans Node 13.

Vous devrez peut-être mettre à niveau Node pour l'utiliser, vous forçant à mettre à niveau Gulp. Ou vous pouvez simplement souhaiter les avantages de l'utilisation de Gulp 4, car il offre un contrôle meilleur et plus efficace sur les tâches d'écriture.

Il existe déjà un certain nombre d'articles à ce sujet, donc je ne développerai pas davantage sur les détails, mais pour réitérer - ce n'est pas un travail rapide . Selon la taille de votre projet, une réécriture importante peut être requise et des dépendances peuvent se briser. Si vous manquez de temps, vous devriez opter pour une simple rétrogradation de Node, au moins temporairement.


Mais j'ai déjà Gulp 4, et ça ne marche toujours pas!

Si, comme moi, vous utilisez déjà Gulp 4+ (j'utilisais Gulp 4.0.2, à l'origine sur Node 10) et récemment mis à niveau (j'ai mis à niveau vers Node 13.8.0) le problème persiste-t-il, c'est peut-être parce qu'une dépendance s'appuie sur une ancienne version de Gulp, et que cela se trouve dans le pipeline.

Dans mon cas, gulp-combine-mq était une dépendance utilisant Gulp 3.9.*. La désactivation de cette tâche dans mon gulpfile a permis à Gulp de s'exécuter à nouveau.

Si cela se produit, vous avez quelques options: vous pouvez,

  1. Allez sans le plugin si ce n'est pas absolument nécessaire
  2. Trouvez une alternative,
  3. Fixer le plugin

Inutile de dire que si vous avez plusieurs plugins qui s'appuient sur une ancienne version de Gulp - en particulier si ces plugins sont vitaux pour votre application - c'est là qu'il peut y avoir un énorme temps supplémentaire consacré à la mise à niveau de Gulp (d'où les avertissements ci-dessus).

Si cela se produit, il est préférable de simplement rétrograder le nœud, au moins jusqu'à ce que des correctifs puissent être émis.

2
Oliver

J'ai résolu ce problème sur Windows 10 en désinstallant le nœud de Ajouter ou supprimer des programmes -> Node.js

J'ai ensuite installé la version 11.15.0 à partir de https://nodejs.org/download/release/v11.15.0/

Choisissez node-v11.15.0-x64.msi si vous exécutez Windows 64 bits.

2
Rob

Pour ceux qui utilisent yarn.

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

J'utilisais le nœud v12.13.1, j'ai donc rétrogradé à la version 10.19.0 et fonctionne très bien après cela.

0
Leonardo Brito

Mettez à niveau vers 4.0.1 et assurez-vous de migrer https://fettblog.eu/gulp-4-parallel-and-series/#migration

0
Morgan Segura

j'ai le même problème, mais j'ai résolu ce problème. je vous suggère d'abord, assurez-vous d'abord npm install votre pas de problème. puis vous rétrogradez le nœud de version et gulp. j'ai utilisé la version noeud 10.16.1 et gulp 3.9.1. pour rétrograder votre gorgée, vous pouvez écrire

npm install gulp@^3.9.1
0
Anjasmara Dwi.S

En effet, le problème de compatibilité entre node et gulp dans votre système. Rétrograder le node ou mettre à niveau le gulp résoudra ce problème.

Sudo npm i -g n
Sudo n 11.15.0

Essayez de supprimer le node_modules dossier et package-lock.json fichier et réinstallation à l'aide de npm i commande si elle ne fonctionne toujours pas.

0
Rijosh

Suivez simplement ces étapes . Je suis sur Windows 10 et cela a parfaitement fonctionné pour moi!

  1. Dans le même répertoire où vous avez package.json créer un npm-shrinkwrap.json fichier avec le contenu suivant:
    {
      "dependencies": {
        "graceful-fs": {
            "version": "4.2.2"
         }
      }
    }
  1. Courir npm install, et ne vous inquiétez pas, il mettra à jour npm-shrinkwrap.json avec un tas de contenu.

  2. Exécutez gulp pour démarrer le projet.

0
Diego Fortes

Êtes-vous confronté à ReferenceError: primordiaux n'est pas défini Erreur lors de la tentative d'exécution de gulp? Vous êtes peut-être sur gulp v3 et node v12, et c'est la source du problème.

Le problème est que gulp v3 ne fonctionne pas (pour l'instant) sous le nœud v12, car cela dépend de graceful-fs@^3.0.0 qui corrige le module fs de Node et ce correctif fonctionnait très bien avant le nœud v12.

Solution pour ReferenceError: les primordiaux ne sont pas définis:

  1. mettre à niveau gulp vers v4. Cette solution résoudra votre erreur.

  2. Pour rétrograder Node vers v11 Pour résoudre cette erreur.

  3. Pour épingler graceful-fs à la version 4.2.2 qui fonctionne sous Node v12 - Cette option expliquée ci-dessous cette option fonctionne pour moi, donc je vous recommande cette option.

ici est un exemple de l'option 3

0
Milan.Patel

Si vous essayez d'installer semantic-ui Et que l'erreur suivante se produit, essayez de télécharger la dernière version de node js(13.5.0) avec les dernières fonctionnalités, depuis Node.js.org, en plus plutôt que d'essayer NPM installez la sémantique, vous devez simplement ajouter le lien (que vous pouvez trouver à partir de lien cdnjs dans l'en-tête de votre fichier index.html.

0
Haiqa

Vous avez deux options ici

  1. Soit mise à niveau vers gulp 4, soit sinon
  2. rétrograder vers une version antérieure du nœud.
0
Milan R Dhameliya

J'obtenais également une erreur sur Node 12/13 avec Gulp 3, le déplacement vers Node 11 a fonctionné.

0
user3663323

Cette erreur est due à la nouvelle version de Node (12) et une ancienne version de gulp (moins de 4).

Rétrograder Node et autres dépendances n'est pas recommandé. J'ai résolu cela en mettant à jour package.json fichier récupérant la dernière version de toutes les dépendances. Pour cela, j'utilise npm-check-updates. C'est un module qui met à jour le package.json avec la dernière version de toutes les dépendances.

Référence : https://www.npmjs.com/package/npm-check-updates

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

Dans la plupart des cas, nous devrons mettre à jour le gulpfile.js ainsi que les éléments suivants:

Référence : https://fettblog.eu/gulp-4-parallel-and-series/#migration

Avant:

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

Aprè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'));
    }
);
0
Rijo K P

Comme nous obtenons également cette erreur lorsque nous utilisons le package s3 NPM. Le problème est donc avec le package graceful-fs, nous devons le mettre à jour. Cela fonctionne bien sur 4.2.3.

Il suffit donc de regarder dans quel package NPM il affiche dans les traces de journaux et de mettre à jour le graceful-fs en conséquence à 4.2.3.

0
Manish sharma

Pour toute personne ayant la même erreur pour la même raison dans ADOS CI Build:

Cette question a été la première que j'ai trouvée en cherchant de l'aide. J'ai un pipeline de construction ADOS CI où la première tâche d'installation de l'outil Node.js est utilisée pour installer Node. Ensuite, la tâche npm est utilisée pour installer gulp (npm install -g gulp). Ensuite, la tâche Gulp suivante exécute la tâche par défaut à partir de gulpfile.js. Il y a des trucs stupéfiants dedans.

Lorsque j'ai changé l'outil Node.js pour installer le dernier nœud 12.x au lieu d'un ancien et la dernière version de gulp était 4.0.2. Le résultat a été la même erreur que celle décrite dans la question.

Ce qui a fonctionné pour moi dans ce cas a été de rétrograder node.js vers la dernière version 11.x comme cela a déjà été suggéré par Alphonse R. Dsouza et Aymen Yaseen. Dans ce cas, il n'est pas nécessaire d'utiliser les commandes suggérées, mais définissez plutôt la spécification de version du programme d'installation de l'outil Node.js sur la dernière version Node version de 11.x.

enter image description here

La version exacte de Node.js qui a été installée et fonctionne était 11.15.0. Je n'ai pas eu à déclasser le Gulp.

0
Lupa

J'ai rencontré cette erreur après la mise à niveau de mon nœud vers la version 12, qui ne fonctionne pas avec Gulp 3.9.1. En ce qui concerne le fait que mon gulpfile.js n'était pas si complexe, j'ai décidé de passer à Gulp 4 en utilisant cet article , cela s'est bien passé et c'est beaucoup plus facile que je ne le pensais.

0
Mojtaba

J'ai fait face au même problème. Ce que j'ai essayé et travaillé pour moi: - 1). Vérifiez la version de NODE et GULP (la combinaison de nœud v12 et gulp inférieure à v4 ne fonctionne pas) 2). Je rétrograde la version npm par: #Sudo npm install -g n #Sudo n 10.16.0 Cela a bien fonctionné, puis suivez simplement les instructions de votre console

0
kamni jaiswal

Résolu en rétrogradant la version Node.js de 12.14.0 à 10.18.0 et réinstaller node_modules.

0
Artem Luzhanovskyi

Ce qui a fonctionné pour moi, c'est d'utiliser python2 lors de l'installation de npm.

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