How to fix 'fs: re-evaluating native module sources is not supported' - graceful-fs

node.jsNpmNode ModulesNpm Install

node.js Problem Overview


Recently I've made a switch to Node v.6, and It started creating more and more problems with running normal builds grunt/gulp/webpack

For example:

$ gulp
[14:02:20] Local gulp not found in ~/_Other/angular-2-ts/angular2-seed
[14:02:20] Try running: npm install gulp

while gulp and all other plugins and modules are installed (and even re-installed via rm -rf node_modules) in /node_modules folder.

Most of those errors have line like

(node:42) fs: re-evaluating native module sources is not supported. 
If you are using the graceful-fs module, 
please update it to a more recent version.

with 42 as arbitrary number

Like in that issue I've submitted - in angular2-seed repo https://github.com/mgechev/angular2-seed/issues/902

What I've tried to do is downgrade to Node v.5 via n (https://www.npmjs.com/package/n) - it worked. Then remove all node_modules folders, then do

npm info graceful-fs -v
3.3.6

ok, lets upgrade or remove and install new:

npm i graceful-fs@latest
npm i graceful-fs@4.1.4
sudo npm i graceful-fs@4.1.4 -g

all results in

npm info graceful-fs -v
3.3.6

So now I am currenlty stuck with graceful-fs 3.3.6 or even worse in some modules dependances, like

$ angular2-seed
$ npm install

//other lines..
npm WARN deprecated graceful-fs@1.2.3: graceful-fs v3.0.0 and before 
will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 
as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.

What could be the strategy here:

  • Manually patch all the deps that contain graceful-fs < 4.0.0?
  • There's some global switch to use specific package version?
  • Reinstall everything?

node.js Solutions


Solution 1 - node.js

I had this problem and I was able to fix this by updating npm

sudo npm update -g npm

Before the update, the result of npm info graceful-fs | grep 'version:' was:

version: '3.3.12'

After the update the result is:

version: '3.9.3'

Solution 2 - node.js

Type npm list graceful-fs and you will see which versions of graceful-fs are currently installed.

In my case I got:

npm list graceful-fs

@request/promise-core@0.0.1 /projects/request/promise-core
+-- gulp@3.9.1
| `-- vinyl-fs@0.3.14
|   +-- glob-watcher@0.0.6
|   | `-- gaze@0.5.2
|   |   `-- globule@0.1.0
|   |     `-- glob@3.1.21
|   |       `-- graceful-fs@1.2.3        <==== !!!
|   `-- graceful-fs@3.0.8 
`-- publish-please@2.1.3
  +-- nsp@2.4.0
  | `-- nodesecurity-npm-utils@4.0.1
  |   `-- silent-npm-registry-client@2.0.0
  |     `-- npm-registry-client@7.1.0
  |       `-- graceful-fs@4.1.3 
  `-- read-pkg@1.1.0
    `-- load-json-file@1.1.0
      `-- graceful-fs@4.1.4

As you can see gulp deep down depends on a very old version. Unfortunately, I can't update that myself using npm update graceful-fs. gulp would need to update their dependencies. So if you have a case like this you are out of luck. But you may open an issue for the project with the old dependency - i.e. gulp.

Solution 3 - node.js

Solved this bug with reinstall gulp

npm uninstall gulp
npm install gulp

Solution 4 - node.js

Deleting node_modules folder contents and running

npm install bower
npm install

solved the problem for me!

Solution 5 - node.js

As described here, you can also attempt the command

npm cache clean

That fixed it for me, after the other steps had not fully yielded results (other than updating everything).

Solution 6 - node.js

Just to point out that cordova brings in it's own npm with the graceful-fs dependency, so if you use Cordova make sure that it is the latest so you get the latest graceful-fs from that as well.

Solution 7 - node.js

I was able to fix it by:

  1. updating by package.json
  2. deleting the node_modules folder
  3. executing npm install

Solution 8 - node.js

if you are running nvm you might want to run nvm use <desired-node-version> This keeps node consistent with npm

Solution 9 - node.js

Or try to update node:

brew upgrade node

If it is installed with brew (like in my case). sudo npm update -g npm did not solve the "same" problem for me.

Solution 10 - node.js

The report says : a file is missing in ... vendor/win32-x64-48/binding.node

I looked for the binding.node file and I find it in...

https://github.com/sass/node-sass-binaries

Copy the correct file with the name binding.node and it works.

Solution 11 - node.js

In the case of my Cordova-project, uninstalling and installing cordova -g fixed the problem for me.

npm uninstall -g cordova
npm install -g cordova

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionshershenView Question on Stackoverflow
Solution 1 - node.jsAsimovView Answer on Stackoverflow
Solution 2 - node.jsanalog-nicoView Answer on Stackoverflow
Solution 3 - node.jsHamza ErbayView Answer on Stackoverflow
Solution 4 - node.jsDavidView Answer on Stackoverflow
Solution 5 - node.jsserv-incView Answer on Stackoverflow
Solution 6 - node.jsYohioView Answer on Stackoverflow
Solution 7 - node.jsszuuukenView Answer on Stackoverflow
Solution 8 - node.jsnicmwendaView Answer on Stackoverflow
Solution 9 - node.jsAziz AltoView Answer on Stackoverflow
Solution 10 - node.jsDavid HView Answer on Stackoverflow
Solution 11 - node.jsMagnus IngwersenView Answer on Stackoverflow