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?
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'
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
.
Solved this bug with reinstall gulp
npm uninstall gulp
npm install gulp
Deleting node_modules folder contents and running
npm install bower
npm install
solved the problem for me!
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).
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.
if you are running nvm you might want to run nvm use <desired-node-version>
This keeps node consistent with npm
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.
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.
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