How to fix 'fs: re-evaluating native module sources is not supported' - graceful-fs
node.jsNpmNode ModulesNpm Installnode.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:
- updating by
package.json
- deleting the node_modules folder
- 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