How to fix "ReferenceError: primordials is not defined" in Node.js
Asked Answered
S

44

896

I have installed Node.js modules by 'npm install', and then I tried to do gulp sass-watch in a command prompt. After that, I got the below response.

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

ReferenceError: primordials is not defined

I have tried this before gulp sass-watch:

npm -g install gulp-cli
Satiate answered 30/4, 2019 at 12:57 Comment(1)
If anyone is getting this issue during automated execution of gulp tasks via the Visual Studio Task Runner (particular after updating VS), see here - https://mcmap.net/q/54729/-visual-studio-task-runner-explorer-referenceerror-primordials-is-not-definedTychonn
H
914

I hit the same error. I suspect you're using Node.js 12 and Gulp.js 3. That combination does not work: Gulp.js 3 is broken on Node.js 12 #2324

A previous workaround from Jan. does not work either: After update to Node.js 11.0.0 running Gulp.js exits with 'ReferenceError: internalBinding is not defined' #2246

Solution: Either upgrade to Gulp.js 4 or downgrade to an earlier version of Node.js.

Haemachrome answered 30/4, 2019 at 18:19 Comment(9)
I'm using node v12.1.0 and gulp [email protected] but it doesn't workHomiletics
I'd recommend using npm-shrinkwrap.json solution posted by Valentin: https://mcmap.net/q/53483/-how-to-fix-quot-referenceerror-primordials-is-not-defined-quot-in-node-js, even though this is the accepted solution.Brok
I use node v14 and gulp v4. And I still get the issue :(Damnatory
Upgraded Gulp to 4 and had to fix a couple Task issues in my gulpfile.js but that did the trick.Lovesome
You can also use nvm to use several node versionsCervelat
use node package manager npmjs.com/package/n, which can be used switch between the whatever the node version you want.Ardenia
This worked, thanks. I'm using node v16.17.1 and gulp 4.0.2 Though in my case I had to upgrade gulp both globally and in the dev dependency. Essentially running npm install --global gulp-cli and then npm install --save-dev gulpCrosslink
This solution is right but it also can be happened becouse of version of npm, for me downgrade from npm 9.3.1 to 6.14.4 helpedChoosey
Upgraded to the latest gulp version to remove the error (using node 18.17.x) but now getting the error Task function must be specifiedBreakneck
C
948

We encountered the same issue when updating a legacy project depending on [email protected] to Node.js 12+.

These fixes enable you to use Node.js 12+ with [email protected] by overriding graceful-fs to version ^4.2.11.

If you are using pnpm

pnpm supports overriding some dependencies versions. To do it, you should add a pnpm section in your package.json file:

{
  "pnpm": {
    "overrides": {
      "graceful-fs": "^4.2.11"
    }
  }
}

If you are using yarn v1

Yarn v1 supports resolving a package to a defined version. You need to add a resolutions section to your package.json:

{
  "resolutions": {
    "graceful-fs": "^4.2.11"
  }
}

Thanks @jazd for this way to solve the issue.

If you are using npm

Run this command to know which version of npm you are using:

npm -v

It will return a version number <major>.<minor>.<patch> such as 8.4.0.

If your version is v8.3.0 or above, then you can override the version of graceful-fs by adding an overrides section in your package.json file:

{
  "overrides": {
    "graceful-fs": "^4.2.11"
  }
}

Otherwise, you need to use npm-force-resolutions as a preinstall script to be able to override the version of graceful-fs by changing your package.json file like this:

{
  "scripts": {
    "preinstall": "npx npm-force-resolutions"
  },
  "resolutions": {
    "graceful-fs": "^4.2.11"
  }
}

npm-force-resolutions will alter the package-lock.json file to set graceful-fsto the wanted version before the install is done.

If you are using a custom .npmrc file in your project and it contains either a proxy or custom registry, you might need to change npx npm-force-resolutions to npx --userconfig .npmrc npm-force-resolutions because some versions of npx don't use the current folder .npmrc file by default.

Origin of the problem

This issue stems from the fact that [email protected] depends on graceful-fs@^3.0.0 which monkeypatches Node.js fs module.

This used to work with Node.js until version 11.15 (which is a version from a development branch and shouldn't be used in production).

graceful-fs@^4.0.0 does not monkeypatch Node.js fs module anymore, which makes it compatible with Node.js > 11.15 (tested and working with versions 12, 14, 16, 18 and 20).

Note that this is not a perennial solution but it helps when you don't have the time to update to gulp@^4.0.0.

Continuo answered 15/10, 2019 at 12:33 Comment(7)
@Continuo this worked for me, but how did it work? From what I've read, besides being publishable, npm-shrinkwrap.json should behave the same as package-lock.json. Why don't they behave the same here? Why is npm-shrinkwrap.json needed to fix this?Internalcombustion
What it does is that it overrides graceful-fs version to a newer version (v4+) which does not monkey patch nodejs fs module anymore (see graceful-fs README). Thankfully this is enough to get everything working.Continuo
npx npm-force-resolutions doesn't work anymore without a valid package-lock.json. To work around that, use "preinstall": "npm install --package-lock-only --ignore-scripts && npx npm-force-resolutions" (source).Pepper
@Pepper I haven't had this issue since the package-lock.json was committed in source control long before the preinstall script was added. As of today, I would recommend using Node.js 16.14.0 and up which comes with npm 8.3.0+ to use be able to use the overrides solution.Continuo
I can´t thank you enough! Works perfectly, adding the "overrides" key to package.json using npm > 8.3.0!Depoliti
Note: If you try this but it's not working, try deleting npm-shrinkwrap.json and then running npm install again (after deleting node_modules, of course)Neoterize
You need to figure out which package is using the old graceful-fs. For example, you have an some package that has the old graceful-fs. you will still get the error even if you have overridden graceful-fs. so you have to override some too. ` "overrides": { "graceful-fs": "^4.2.11", "some": "^9.3.1" } `Pasteup
H
914

I hit the same error. I suspect you're using Node.js 12 and Gulp.js 3. That combination does not work: Gulp.js 3 is broken on Node.js 12 #2324

A previous workaround from Jan. does not work either: After update to Node.js 11.0.0 running Gulp.js exits with 'ReferenceError: internalBinding is not defined' #2246

Solution: Either upgrade to Gulp.js 4 or downgrade to an earlier version of Node.js.

Haemachrome answered 30/4, 2019 at 18:19 Comment(9)
I'm using node v12.1.0 and gulp [email protected] but it doesn't workHomiletics
I'd recommend using npm-shrinkwrap.json solution posted by Valentin: https://mcmap.net/q/53483/-how-to-fix-quot-referenceerror-primordials-is-not-defined-quot-in-node-js, even though this is the accepted solution.Brok
I use node v14 and gulp v4. And I still get the issue :(Damnatory
Upgraded Gulp to 4 and had to fix a couple Task issues in my gulpfile.js but that did the trick.Lovesome
You can also use nvm to use several node versionsCervelat
use node package manager npmjs.com/package/n, which can be used switch between the whatever the node version you want.Ardenia
This worked, thanks. I'm using node v16.17.1 and gulp 4.0.2 Though in my case I had to upgrade gulp both globally and in the dev dependency. Essentially running npm install --global gulp-cli and then npm install --save-dev gulpCrosslink
This solution is right but it also can be happened becouse of version of npm, for me downgrade from npm 9.3.1 to 6.14.4 helpedChoosey
Upgraded to the latest gulp version to remove the error (using node 18.17.x) but now getting the error Task function must be specifiedBreakneck
S
509

Fix it in one minute:

Just follow these steps. I'm on Windows 10 and it worked perfectly for me!

  1. In the same directory where you have package.json create a npm-shrinkwrap.json file with the following contents:

        {
          "dependencies": {
            "graceful-fs": {
                "version": "4.2.2"
             }
          }
        }
    
  2. Run npm install, and don't worry, it will update npm-shrinkwrap.json with a bunch of content.

  3. Run gulp to start the project.

Spotted answered 29/3, 2020 at 21:45 Comment(3)
Be Warned This is just a temporary solution, if you run npm i once again, it's broken again.Balzer
Because shrinkwrap.json file is modified after npm install, you need to delete it if you want to run it again. The solution is to add a line in your package.json scripts node: "preinstall": "cp npm-shrinkwrap.gulp.json npm-shrinkwrap.json", where npm-shrinkwrap.gulp.json is the needed one, which will be copied into npm-shrinkwrap.json before npm install. (Change cp to copy on Windows)Furrow
I have worked it, I had npm@14 versionNoblenobleman
S
147

Use the following commands and install Node.js v11.15.0:

npm install -g n

sudo n 11.15.0

will solve

ReferenceError: primordials is not defined in node

Referred from @Terje Norderhaug @Tom Corelis answers.

Sitin answered 5/9, 2019 at 11:11 Comment(3)
If it still doesn't work try this (after the above commands): npm rebuild node-sassPeekaboo
npm install -g n on my (windows 64) machine produces an error: npm ERR! notsup Unsupported platform for [email protected]: wanted {"os":"!win32","arch":"any"} (current: {"os":"win32","arch":"x64"})Lussier
I had node 12 previously, downgrading helped me.Tribble
A
55

Use the following commands to install Node.js v11.15.0 and Gulp.js v3.9.1:

npm install -g n

sudo n 11.15.0

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

It will solve this issue:

ReferenceError: primordials is not defined in node

Aborn answered 20/9, 2019 at 6:33 Comment(3)
Please do not use a shortliving NodeJS branch (all odd version numbers like 9 and 11), use NodeJS 10.Ecumenical
n in sudo n 11.15.0 is supposedly installed in the first step, npm install -g n. What is that? Does it still work?Wraparound
In case you face permissions issues running npm install gulp@^3.9.1 follow the steps from this guide docs.npmjs.com/…Elliellicott
F
49

For me, Diego Fortes' answer works with one small change.

Here is my workflow if this error appears:

  1. npm install

  2. npm install gulp

  3. create file npm-shrinkwrap.json with

    {
      "dependencies": {
        "graceful-fs": {
            "version": "4.2.2"
         }
      }
    }
    
  4. npm install (again) (Not npm install gulp again! Very important - otherwise the error will be come back)

  5. gulp (now working)

Fortunna answered 4/5, 2021 at 12:35 Comment(1)
This is just a temporary solution, if you run npm i once again, it's broken again.Balzer
W
32

Using NVM to manage what Node.js version you're using, running the following commands worked for me:

cd /to/your/project/
nvm install lts/dubnium # v10.24.1
nvm use lts/dubnium
yarn upgrade # or `npm install`
Waxbill answered 27/5, 2019 at 15:26 Comment(3)
Please do not use a shortliving NodeJS branch (all odd version numbers like 9 and 11), use NodeJS 10. Also use 10 instead of the code name.Ecumenical
For Windows use nvm-windows.Pizza
Dubnium = Node.js 10.24.1Armourer
I
28

Gulp 3.9.1 doesn't work with Node v12.x.x, and if you upgrade to Gulp 4.0.2, you have to completely change gulpfile.js with the new syntax (series & parallels). So your best bet is to downgrade to Node.js v 11.x.x (the 11.15.0 version worked fine for me) by simply using the following code in a 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
Inandin answered 8/11, 2019 at 18:7 Comment(0)
E
28

TL:DR

Gulp 3.* doesn't work on Node.js 12.* or above. You have to downgrade Node.js, or upgrade Gulp.

If you are short on time, downgrade Node.js to v11.* or below; if you need newer features, and have time to possibly fix a load of broken dependencies, upgrade Gulp to 4.* or above!

As others have already mentioned, Gulp 3.* is not supported on Node.js 12 or above, so you will have to downgrade your Node version to 11.* or below, OR upgrade your Gulp to 4.0.

The best option depends ultimately on how much time you have, as upgrading Gulp brings benefits of cleaner gulpfiles and in-built control over having tasks run in series or parallel, but also relies on you rewriting your gulpfile to a new syntax, and might (read: probably will - see end of this comment) cause conflicts with some dependencies.


Downgrading Node.js

This is the easiest and quickest option. Especially if you use n or nvm, as these allow you to very quick install and switch between Node.js versions.

Installing Node.js version on N

n 10.16.0

Installing a Node.js version on NVM

nvm install 10.16.0

Once you have done this, you may need to rebuild your npm dependencies or alternatively remove both your node_modules folder and your package-lock.json file and reinstalling your dependencies. Though if you are merely reverting to a preexisting Node.js version, you should probably be fine.


Upgrading Gulp

As mentioned above, this is a more time-intensive task, but it might bring benefits in the long run. For example, Node.js 12 has now introduced native support for ES Modules (behind an experimental flag) and full support in Node.js 13.

You may need to upgrade Node.js to use that, forcing you to upgrade Gulp. Or you may simply want the benefits of using Gulp 4, as it offers better and more efficient control over writing tasks.

There are a number of articles on this already, so I won't elaborate any further on the specifics, but to reiterate - this is not a quick job. Depending on the size of your project, there may be some notable rewriting required, and you may have dependencies that break. If you are in short supply of time, you should opt for simply downgrading Node.js, at least temporarily.


But I already have Gulp 4, and it still doesn't work!

If, like me, you are already using Gulp 4+ (I was using Gulp 4.0.2, originally on Node.js 10) and have recently upgraded (I upgraded to Node.js 13.8.0) are you are still getting the issue, it may be because a dependency is relying on an older version of Gulp, and that is getting caught in the pipeline.

In my case, gulp-combine-mq was a dependency using Gulp 3.9.*. Disabling this task in my gulpfile allowed Gulp to run again.

If this happens, you have a few options. You can,

  1. Go without the plugin if it's not absolutely necessary
  2. Find an alternative,
  3. Fix the plugin

Needless to say, if you have several plugins that rely on an older version of Gulp - especially if these plugins are vital for your application - this is where there can be a huge additional chunk of time spent in upgrading Gulp (hence the warnings above).

If this happens, it is best to just downgrade Node.js, at least until patches can be issued.

Entity answered 9/2, 2020 at 13:1 Comment(1)
To me, this is also my case. I was using Gulp 4, but a old gulp plugin was internally depending on old graceful-fs version. Culprit can be found using npm ls graceful-fs - a package using graceful-fs with version below 4 will be causing this issue. Remove it from gulpfile, use an alternative or upgrade it to fix the issue.Satterfield
K
28

Simple and elegant solution

Just follow these steps. It worked perfectly with npm install running multiple times or installing any other modules or even publishing project to artifactory.

In the same directory where you have package.json create a npm-shrinkwrap.json file with the following contents:

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

Run npm install, and don't worry, it'll update npm-shrinkwrap.json with a bunch of content. Let's get rid of this updates by updating package.json scripts options.

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

Now you can run npm install and your npm-shrinkwrap.json will be intact and will work forever.

Kial answered 24/4, 2020 at 10:10 Comment(5)
Saved me from preserving npm-shrinkwrap.json manually, thanks!Atabrine
Great to see my first post on stack overflow helped being you as the first person @Atabrine :)Kial
@Kial when I install another module afterwards, e.g. npm i bla, it only installs the graceful-fs + the new one but all other modules are missing then, is it the same for you?Garling
@Garling no i didn't see that happening. You should be seeing some changes in your package.config file.Kial
Nice, but with npm v7 those directives went away. They are never executed; as per github.com/npm/cli/issues/2520Illuviation
E
16

I had the same error. I finally fixed that when I updated all packages and then mentioned the same Node.js engine version and npm version in package.json as it is in my local working system.

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

I was getting this error when deploying on Heroku.

For more, check out Heroku support.

Erinaceous answered 8/5, 2019 at 15:24 Comment(2)
This is workaround and not a fix. Sometimes we cannot downgrade node version from 12 to 10.Kial
Hey, you just need to be sure about the node engine version are the same on Heroku and on the local machine. :)Erinaceous
C
10

Check Node.js version:

 node --version

Check gulp version:

gulp -v

If Node.js >=12 and gulp <= 3, do one of the following:

  1. Upgrade gulp
sudo npm install -g gulp
  1. Downgrade node
sudo npm install -g n
sudo n 11.15.0

How to Upgrade (or Downgrade) Node.js Using npm

Corella answered 21/6, 2020 at 16:33 Comment(0)
T
9

The problem occurred for me in Visual Studio's Task Runner Explorer only and not when running from the command line or PowerShell.

I realised that VS was ignoring the Node version I had set with NVM.

This post gave the answer: Configure which NPM is used by Visual Studio's Task Runner Explorer? by setting the PATH variable as a higher priority than external tools in VS, it used the Node version set by NVM and not the version installed with VS. enter image description here

Tehee answered 25/2, 2022 at 10:43 Comment(1)
This was my issue and the simplicity of verification/remedy of this problem makes me wish I could upvote this twice and I really wish I would've seen this first.Lumpen
S
8

In case the problem is not from gulp then check the unzip npm module. It's been around six years since the last time it was updated. It doesn't work with Node.js > v11.

Try this:

npm install -g n

sudo n 11.15.0
Stavropol answered 18/7, 2020 at 17:4 Comment(2)
Same with unzip2. However, unzip2 has a replacement that works - node-unzip-2Jacquettajacquette
Had the same issue on my project. Moved to unzipper fork instead github.com/EvanOxfeld/node-unzip/issues/…Leatriceleave
B
6

Downgrading to Node.js stable fixed this issue for me, as it occurred after I upgraded to Node.js 12:

sudo n 10.16.0
Bhopal answered 22/7, 2019 at 17:10 Comment(3)
If you try this and get the error: 'sudo: n: command not found', be sure to install n first with: 'npm install -g n'Aggarwal
Tryed this on Windows 10 (64 bit) and got :- C:\react-script-editor>npm install -g n npm ERR! code EBADPLATFORM npm ERR! notsup Unsupported platform for [email protected]: wanted {"os":"!win32","arch":"any"} (current: {"os":"win32","arch":"x64"}) npm ERR! notsup Valid OS: !win32 npm ERR! notsup Valid Arch: any npm ERR! notsup Actual OS: win32 npm ERR! notsup Actual Arch: x64Laguna
Downgrading is not an option. We need a fix and not a bandaid solution.Kial
U
6

This error is because of the new version of Node.js (12) and an old version of Gulp (less than 4).

Downgrading Node.js and other dependencies isn't recommended. I solved this by updating package.json file, fetching the latest version of all dependencies. For this, I use npm-check-updates. It is a module that updates the package.json with the latest version of all dependencies.

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

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

In most cases, we will have to update the gulpfile.js as well like the following:

Reference: Gulp 4: The new task execution system - gulp.parallel and gulp.series, Migration

Before:

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

            ....
    }
);

Other configuration...

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

After:

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'));
    }
);
Ulric answered 20/2, 2020 at 5:58 Comment(1)
Great solution if you don't have complex gulp files. In my case, I only had to adapt two lines per gulpfile.js. Thanks for the short migration guide!Update
D
5

I faced the same issue. What I tried and what worked for me:

  1. Check the version of Node.js and Gulp.js (a combination of Node.js v12 and Gulp.js less than v4 doesn't work)

  2. I downgraded the NPM version by:

    sudo NPM install -g n
    sudo n 10.16.0
    

It worked fine. Then just follow the instructions of your console.

Din answered 11/7, 2019 at 12:14 Comment(0)
S
4
  • Remove package-lock.json or yarn.lock file.

  • Then remove node_modules.

  • After that modify the package.json file-

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

  • Then run- npm install

It will be enough to solve this problem.

Sericeous answered 27/6, 2022 at 9:53 Comment(0)
N
3

I was getting this error on Windows 10. It turned out to be a corrupted roaming profile.

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:

Deleting the C:\Users\{user}\AppData\Roaming\npm folder fixed my issue.

Nineteenth answered 20/6, 2019 at 19:13 Comment(1)
This messed up my whole npm dependencies, sorry.Echo
S
3

I fixed this issue on Windows 10 by uninstalling Node.js from Add or Remove Programs → Node.js.

Then I installed version 11.15.0 from https://nodejs.org/download/release/v11.15.0/

Choose node-v11.15.0-x64.msi if you're running Windows 64-bit.

Segal answered 5/12, 2019 at 9:48 Comment(0)
E
2

Upgrade to 4.0.1 and make sure to migrate https://fettblog.eu/gulp-4-parallel-and-series/#migration

Elisa answered 25/6, 2019 at 22:6 Comment(2)
Did that, no dice.Donndonna
It's not that easy unfortunately. Gulp 4.x.x is massively incompatible with Gulp 3.x.x. The Gulpfile will essentially need to be rewritten from scratch.Pepper
P
2

If keeping Node.js v12 while using the latest gulp ^4.0, follow these steps:

Update the command-line interface (just for precaution) using:

npm i gulp-cli -g

Add/Update the gulp under dependencies section of your package.json file

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

Delete your package-lock.json file.

Delete your node_modules folder.

Finally, run npm i to upgrade and recreate a brand new node_modules folder and package-lock.json file with correct parameters for Gulp ^4.0:

npm i

Note Gulp.js 4.0 introduces the series() and parallel() methods to combine tasks instead of the array methods used in Gulp 3, and so you may or may not encounter an error in your old gulpfile.js script.

To learn more about applying these new features, this site have really done justice to it: How to Migrate to Gulp.js 4.0

Pique answered 4/12, 2019 at 10:23 Comment(2)
What's the gulp-cli for? I followed your steps and got everything working initially; but then I uninstalled gulp-cli (since I didn't see where it was being used), and everything still worked. Thanks for the answer, though, because I'm up and running again with node v12.9.1 and Gulp 4.0.2!Dissatisfaction
I am glad it helped. gulp-cli is command line utility. Its ensures proper installation of gulp As you can see in gulp installation steps here: gulpjs.com/docs/en/getting-started/quick-startPique
A
2

If you're trying to install semantic-ui and the following error occurs then try downloading the latest version of Node.js js(13.5.0) with the latest features, from Node.js.org.

Moreover, rather than trying the NPM install semantic, you should just add the link (which you can find from the cdnjs link) to the header of your index.html file.

Annemarie answered 1/1, 2020 at 3:4 Comment(2)
Code example would be a great addition here.Aitchbone
What does "the following error" refer to?Wraparound
N
2

Gulp is making issue with Node.js version 11 and above. Uninstall your current Node.js version and reinstall the v10.15.1 version. Here is the link for that version. This helps me and it will solve your problem too.

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

Nevski answered 31/1, 2020 at 11:23 Comment(0)
T
2

I have tried a lot of suggestions to fix this problem for an existing project on my Windows 10 machine and ended up following these steps to fix it;

  • Uninstall Node.js from "Add or remove programs". Fire up a new Command prompt and type gulp -v and then node -v to check that it has been uninstalled completely.
  • Download and install Node.js v10.16.0 - not the latest as latest node & gulp combination is causing the problem as far as I see. During installation I didn't change the installation path which I normally do(C:\Program Files\nodejs).
  • Open up a new Command prompt, go to your project's directory where you have got your gulpfile.js and start gulp as shown in the image.

Please note sometimes when I switch between git branches I might need to close my Visual Studio and run it as Admin again in order to see this solution working again.

As far as I see this problem started to happen after I installed the latest recommended version(12.18.4) of Node.js for a new project and I only realised this when some FE changes weren't reflected on the existing web project.

Update: Today I had the same problem while setting up one of my existing projects on my new PC and I did the same steps + went to the directory where I have the gulpfile and then run npm install.

enter image description here

Tractarianism answered 25/9, 2020 at 10:39 Comment(0)
S
2

Install gulp and add your Node.js version to the package.json file like so:

{
  "dependencies": {
    "node":  "^10.16.3"
  }
}
Satang answered 9/4, 2021 at 9:21 Comment(0)
O
2

It seems you've upgraded your nodejs's version to be +12 and still using gulp 3.9.1

You can use one of the below solutions

  • Upgrade you glup version to be +4
  • Or simply you use NVM Node version Manager To run multiple nodejs versions on the same machine.
Outfield answered 22/5, 2022 at 13:0 Comment(0)
I
1

I had this very same error, but it was caused by a different issue.

OS: windows 10
nodejs version: 15.12.0
npm version: 7.6.3

The cause of the problem was graceful-fs package. Whenever I tried to run npm, even running npm-v was firing "ReferenceError: primordials is not defined".

I tried running npm install graceful-fs@latest, but it still didn't work, even though the package was latest version.

So what helped me?

run npm ls graceful-fs

This way you'll find all packages on which graceful-fs is dependency and which version it has. In my case it was mostly version 3.0, even though I've installed version 4.2.6

So how to fix it?

Open npm-shrinkwrap.json (not sure about packages-lock.json) and change search for graceful-fs - you'll see that it has older versions on a few places. Replace it with ^4.2.6 (or newer).

Then npm audit fix --force which will forcefully install the newer version everywhere.

Hope this works for you, it took me a few hours to find out how to fix it.

Iorio answered 22/3, 2021 at 13:9 Comment(0)
V
1

This is old but may still relevant as there are many projects still using gulp v3.

As upgrading gulp would require more changes - for many years the main solution we used was downgrading node version, however this becomes more and more of a problem.

The simplest fix for us these days - without compromising on node version - was to add those two lines to as the last block of /package.json file :

"overrides": {
  "graceful-fs": "^4.2.11",
  "ttf2woff2": "^4.0.4"
}

After adding it - run "npm install" to tell gulp to address the added lines and then gulp v3 would work correctly.

Vella answered 16/7, 2023 at 9:13 Comment(0)
K
0

For those who are using Yarn:

yarn global add n
n 11.15.0
yarn install # Have to install again
Kalina answered 10/10, 2019 at 10:42 Comment(1)
Please do not use a shortliving NodeJS branch (all odd version numbers like 9 and 11), use NodeJS 10.Ecumenical
T
0

You have two options here

  1. Either upgrade to gulp 4 or else
  2. downgrade to an earlier Node.js version.
Tempietempla answered 14/12, 2019 at 11:32 Comment(0)
F
0

This is because the compatibility issue between node and gulp in your system. Downgrading the node or upgrading the gulp will fix this issue.

sudo npm i -g n
sudo n 11.15.0

Try removing the node_modules folder and package-lock.json file and installing again using npm i command if still not working.

Fertilization answered 19/3, 2020 at 8:34 Comment(0)
E
0

I got the same issue installing the npm package webshot.

NOTE: it was a known issue for that package as it depends on graceful-fs behind the scenes.

Fix: 1. upgrade graceful-fs to 4.x or higher

Fix: 2. use webshot-node instead https://www.npmjs.com/package/webshot-node

Ender answered 19/6, 2020 at 11:49 Comment(0)
P
0

Since my project was using gulp version 4, I had to do the following to solve this

  1. Delete folder node_modules
  2. open package.json and update version

Issue

Update

Here is the detail of version I am using

Version

Now run npm install and then run gulp default. The error should be gone and you may see:

Task never defined: default only.

Princely answered 1/2, 2021 at 10:0 Comment(0)
C
0

For me after using series() to combine task the problem was solved.

Any of the answer here was not solved the problem.

Countless answered 13/12, 2021 at 0:17 Comment(0)
C
-2

I suggest you first make sure NPM install is not your problem. Then you downgrade Node.js and Gulp.js versions. I used Node.js 10.16.1 and Gulp.js 3.9.1.

To downgrade your Gulp.js installation, you can try:

npm install gulp@^3.9.1
Czarra answered 2/8, 2019 at 4:30 Comment(0)
K
-2

Using Python 2 (executable python) during npm installation worked for me:

npm install --python=~/venv/bin/python
Konrad answered 17/9, 2019 at 15:0 Comment(0)
M
-2

We also get this error when we use the s3 NPM package. So the problem is with the graceful-fs package - we need to update it. It is working fine on 4.2.3.

So just look in what NPM package it is showing in the logs trace and update graceful-fs accordingly to 4.2.3.

Meggie answered 7/11, 2019 at 6:13 Comment(0)
P
-2

For anyone having the same error for the same reason in ADOS CI Build:

This question was the first I found when looking for help. I have an ADOS CI build pipeline where the first Node.js tool installer task is used to install Node.js. Then npm task is used to install Gulp.js (npm install -g gulp). Then the following Gulp.js task runs default-task from gulpfile.js. There's some gulp-sass stuff in it.

When I changed the Node.js tool to install 12.x latest node instead of an older one and the latest Gulp.js version was 4.0.2. The result was the same error as described in the question.

What worked for me in this case was to downgrade Node.js to latest 11.x version as was already suggested by Alphonse R. Dsouza and Aymen Yaseen. In this case though there's no need to use any commands they suggested, but rather just set the Node.js tool installer version spec to latest Node.js version from 11.x.

Enter image description here

The exact version of Node.js that got installed and is working was 11.15.0. I didn't have to downgrade Gulp.js.

Pizza answered 12/11, 2019 at 15:14 Comment(0)
T
-2

I was also getting an error on Node.js 12/13 with Gulp.js 3. Moving to Node.js 11 worked.

Thedathedric answered 26/11, 2019 at 2:1 Comment(0)
F
-2

I solved by downgrading Node.js version from 12.14.0 to 10.18.0 and reinstalling node_modules.

Filterable answered 23/12, 2019 at 13:33 Comment(0)
R
-2

I was using Node.js v12.13.1, so I've downgraded to v10.19.0. It worked fine after that.

Roumell answered 11/2, 2020 at 15:41 Comment(0)
E
-2

Steps to fix the problem:

I have fixed the problem with the following steps:

  1. Installing NVM
  2. Installed lts/dubnium using command nvm install lts/dubnium
  3. Use lts/dubnium using command nvm install lts/dubnium

Now you can you gulp deploy.

Electrometer answered 18/3, 2020 at 7:30 Comment(1)
This is an inaccurate dupe of the answer of @kevinkCaliche
H
-5

For anyone that is running into this please confirm you haven't done the silly thing I did and accidentally ran npm init in your user directory a million years ago and forgot to clear out those files.

I found this issue when trying to use @vue-cli to create a new project and it ended up being a rogue package.json / package-lock.json file and node_modules folder in the root of my user directory.

Solution: Delete package.json, package-lock.json, and node_modules from your user directory and voila, problem solved! Now, remove the palm from the forehead!

Helical answered 20/8, 2021 at 22:45 Comment(1)
Unless you're using npm of course, that would be devastating for your project :)Norvol

© 2022 - 2024 — McMap. All rights reserved.