无论我做什么,NPM都找不到'优雅-fs'

Col*_*ire 28 node.js npm express

这是我尝试为node.js安装express时得到的

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)
Run Code Online (Sandbox Code Playgroud)

我甚至尝试了其他人,但仍然遇到了同样的错误.我做了一些挖掘,我确实在我的服务器上找到了'gracefui-fs'.

我在亚马逊ec2服务器上运行ubuntu 12.04 LTS.安装的节点没有错误,npm仍然无法正常工作.我也没有安装并重新安装npm使用

apt-get
Run Code Online (Sandbox Code Playgroud)

以及来源.在安装过程中,我也没有收到错误.

小智 36

有同样的问题.不要npmaptitude或下载apt-get.

而是尝试:

git clone --depth=1 git://github.com/npm/cli.git
cd cli/scripts
chmod +x install.sh
sudo ./install.sh
Run Code Online (Sandbox Code Playgroud)

在这里看到它:NPM无法安装appjs.错误:找不到模块'graceful-fs'

  • 它没有帮助 (2认同)
  • 什么都不做 - 现在我的电脑上安装了一些奇怪的东西 (2认同)

小智 18

我有同样的问题.

sudo npm install 
Run Code Online (Sandbox Code Playgroud)

为我解决了.

  • `sudo npm install`通常会导致更多的问题而不是它的价值.如果这甚至可以解决问题,那么通常意味着你已经破坏了权限,并且你可能在整个地方都有意想不到的构建问题.TL; DR:不要这样做.永远.这很糟糕,经常打破尚未破坏的东西. (3认同)

Pau*_*ime 15

我也在使用Ubuntu 12.04,并且遇到了同样的问题(虽然我不认为这是Ubuntu的特定错误).

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)
Run Code Online (Sandbox Code Playgroud)

所以我试着找出运行npm的地方:

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
Run Code Online (Sandbox Code Playgroud)

作为参考,这些是几个链接:

/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*
Run Code Online (Sandbox Code Playgroud)

确认正在使用的是"/ usr/bin/npm":

grimbo@grimbo-ubuntu-12:~/git/SyntaxHighlighter$ which npm
/usr/bin/npm
Run Code Online (Sandbox Code Playgroud)

所以我试着专门调用最新的一个,这似乎可以解决问题:

grimbo@grimbo-ubuntu-12:~/git/SyntaxHighlighter$ /usr/local/n/versions/0.8.7/bin/npm install
npm WARN package.json SyntaxHighlighter@3.0.83 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 jake@0.3.14 should be installed with -g
uglify-js@1.3.3 node_modules/uglify-js

less@1.3.0 node_modules/less

minimatch@0.2.6 node_modules/minimatch
+-- lru-cache@2.0.1

jake@0.3.14 node_modules/jake
+-- utilities@0.0.11
+-- minimatch@0.0.5 (lru-cache@1.0.6)
Run Code Online (Sandbox Code Playgroud)

最终,它看起来可能是因为我过去安装了其他版本的node和npm,它只是让人感到困惑.


Kev*_*yer 10

所以在安装node_js和npm之后,我遇到了同样的问题

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 ...
Run Code Online (Sandbox Code Playgroud)


Pru*_*wee 5

只给我两分钱。我安装

sudo npm install -g graceful-fs
Run Code Online (Sandbox Code Playgroud)

在全球范围内安装了graceful-fs,它解决了我的问题。


小智 1

默认情况下,Node 在项目中查找 ../CollinsProject/node_modules.

尝试将 Graceful-fs 移至此文件夹,它应该可以工作。

如果您想安装全局使用的模块(跨其他项目),则将 Graceful-fs 文件夹移动到/usr/local/lib/node_modules.