Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NPM, cannot find 'graceful-fs', no matter what I do

This is what I get when I try to install express for node.js

npm install express

module.js:340
    throw err;
          ^
Error: Cannot find module 'graceful-fs'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (/usr/share/npm/lib/utils/ini.js:32:10)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:362:17)

I even tried others and still got the same error. I did some digging and i did find 'gracefui-fs' on my server.

I am running ubuntu 12.04 LTS on an amazon ec2 server. Node installed with no errors, and npm still didn't work. I also un installed and re installed npm using

apt-get

as well as from source. During installation I received no errors either.

like image 918
Collin McGuire Avatar asked Jul 08 '12 01:07

Collin McGuire


4 Answers

Had the same problem. Don't download npm from aptitude or apt-get.

Instead try:

git clone --depth=1 git://github.com/npm/cli.git
cd cli/scripts
chmod +x install.sh
sudo ./install.sh

saw it here: NPM can't install appjs. Error: Cannot find module 'graceful-fs'

like image 58
Giuliani Avatar answered Oct 22 '22 12:10

Giuliani


I had the same problem.

sudo npm install 

solved it for me.

like image 31
Max Avatar answered Oct 22 '22 12:10

Max


I was also using Ubuntu 12.04, and was having this same issue (though I don't think it's specifically Ubuntu's fault).

grimbo@grimbo-ubuntu-12:~/git/SyntaxHighlighter$ npm

module.js:340
    throw err;
          ^
Error: Cannot find module 'graceful-fs'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (/usr/share/npm/lib/utils/ini.js:32:10)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:362:17)

So i tried to work out where npm was running from:

grimbo@grimbo-ubuntu-12:~/git/SyntaxHighlighter$ sudo find / -name npm
/etc/bash_completion.d/npm
/usr/bin/npm
/usr/local/bin/npm
/usr/local/n/versions/0.8.7/bin/npm
/usr/local/n/versions/0.8.7/lib/node_modules/npm
/usr/local/n/versions/0.8.7/lib/node_modules/npm/bin/npm
/usr/share/lintian/overrides/npm
/usr/share/doc/npm
/usr/share/npm
/usr/share/doc-base/npm
/usr/lib/nodejs/npm
/var/lib/doc-base/documents/npm

For reference, these were a couple of the links:

/usr/bin/npm -> ../share/npm/bin/npm-cli.js*
/usr/local/n/versions/0.8.7/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js*

Confirmation that it was "/usr/bin/npm" that was being used:

grimbo@grimbo-ubuntu-12:~/git/SyntaxHighlighter$ which npm
/usr/bin/npm

So I tried to call the latest one specifically, which seemed to do the trick:

grimbo@grimbo-ubuntu-12:~/git/SyntaxHighlighter$ /usr/local/n/versions/0.8.7/bin/npm install
npm WARN package.json [email protected] No README.md file found!
npm http GET https://registry.npmjs.org/uglify-js
npm http GET https://registry.npmjs.org/less
npm http GET https://registry.npmjs.org/jake
npm http GET https://registry.npmjs.org/minimatch
npm http 200 https://registry.npmjs.org/uglify-js
npm http GET https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.3.tgz
npm http 200 https://registry.npmjs.org/less
npm http GET https://registry.npmjs.org/less/-/less-1.3.0.tgz
npm http 200 https://registry.npmjs.org/minimatch
npm http GET https://registry.npmjs.org/minimatch/-/minimatch-0.2.6.tgz
npm http 200 https://registry.npmjs.org/less/-/less-1.3.0.tgz
npm http 200 https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.3.tgz
npm http 200 https://registry.npmjs.org/minimatch/-/minimatch-0.2.6.tgz
npm http 200 https://registry.npmjs.org/jake
npm http GET https://registry.npmjs.org/jake/-/jake-0.3.14.tgz
npm http 200 https://registry.npmjs.org/jake/-/jake-0.3.14.tgz
npm http GET https://registry.npmjs.org/lru-cache
npm http GET https://registry.npmjs.org/utilities
npm http GET https://registry.npmjs.org/minimatch
npm http 304 https://registry.npmjs.org/minimatch
npm http GET https://registry.npmjs.org/minimatch/-/minimatch-0.0.5.tgz
npm http 200 https://registry.npmjs.org/utilities
npm http GET https://registry.npmjs.org/utilities/-/utilities-0.0.11.tgz
npm http 200 https://registry.npmjs.org/lru-cache
npm http GET https://registry.npmjs.org/lru-cache/-/lru-cache-2.0.1.tgz
npm http 200 https://registry.npmjs.org/minimatch/-/minimatch-0.0.5.tgz
npm http 200 https://registry.npmjs.org/utilities/-/utilities-0.0.11.tgz
npm http 200 https://registry.npmjs.org/lru-cache/-/lru-cache-2.0.1.tgz
npm http GET https://registry.npmjs.org/lru-cache
npm http 304 https://registry.npmjs.org/lru-cache
npm http GET https://registry.npmjs.org/lru-cache/-/lru-cache-1.0.6.tgz
npm http 200 https://registry.npmjs.org/lru-cache/-/lru-cache-1.0.6.tgz
npm WARN prefer global [email protected] should be installed with -g
[email protected] node_modules/uglify-js

[email protected] node_modules/less

[email protected] node_modules/minimatch
+-- [email protected]

[email protected] node_modules/jake
+-- [email protected]
+-- [email protected] ([email protected])

Ultimately, it looks like maybe because I've had other versions of node and npm installed in the past, it just got confused.

like image 15
Paul Grime Avatar answered Oct 22 '22 12:10

Paul Grime


So after installing node_js and npm, I was having the same problem

my-app# apt-get install mlocate || yum install mlocate
...
my-app$ locate graceful-fs
/usr/lib/nodejs/graceful-fs
... some other junk we don't care about ...
my-app$ export NODE_PATH=/usr/lib/nodejs
my-app$ npm update
... it works ...
like image 13
Kevin Meyer Avatar answered Oct 22 '22 13:10

Kevin Meyer