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

时间:2012-07-08 01:06:16

标签: node.js express npm

当我尝试为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)

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

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

卸载并重新安装了npm
apt-get

以及来源。在安装过程中,我没有收到任何错误。

16 个答案:

答案 0 :(得分:35)

有同样的问题。请勿从npmaptitude下载apt-get

请尝试:

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

在这里看到:NPM can't install appjs. Error: Cannot find module 'graceful-fs'

答案 1 :(得分:19)

我遇到了同样的问题。

sudo npm install 

为我解决了。

答案 2 :(得分:14)

我也在使用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)

所以我试着找出运行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

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

/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*

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

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

所以我试着专门打电话给最新的一个,这似乎可以解决问题:

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)

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

答案 3 :(得分: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 ...

答案 4 :(得分:4)

仅为我的两分钱。 我用

安装
sudo npm install -g graceful-fs

全局安装graceful-fs,它解决了我的问题。

答案 5 :(得分:2)

在安装phonegap时在Ubuntu上遇到类似的问题,用

修复它
sudo npm install graceful-fs

答案 6 :(得分:1)

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

尝试将graceful-fs移动到此文件夹,它应该可以正常工作。

如果要安装要在全局范围内使用的模块(跨其他项目),请将graceful-fs文件夹移至/usr/local/lib/node_modules

答案 7 :(得分:1)

我使用Windows;类似的应该适用于Mac和Linux

在cordova中的npm错误,cordova使用私人npm

转到C:\ Users \ sssca_000 \ AppData \ Roaming \ npm \ node_modules \ cordova \ node_modules将npm重命名为npm_XXX

转到C:\ Users \ sssca_000 \ AppData \ Roaming \ npm \ node_modules这是真正的npm从这里复制npm目录到C:\ Users \ sssca_000 \ AppData \ Roaming \ npm \ node_modules \ cordova \ node_modules < / p>

它对我来说很好用!

答案 8 :(得分:1)

我有Mint Node.js 8.x版本,但已通过n命令升级到11.x。问题是n / npm仅替换/usr/local/bin目录中的二进制或链接,而不替换/usr/bin目录中的二进制或链接。因此,您应将/usr/bin/node-gyp替换为/usr/local/bin/node-gyp内容:

sudo cp -f -s /usr/local/bin/node-gyp /usr/bin/node-gyp

答案 9 :(得分:0)

对于Linux来说,我是一个自我承认的布偶,但我在解决方案上喋喋不休。我正在运行ubuntu 12.04并遇到同样的问题。试过这个,它对我有用,也许比我更好的人可以解释为什么甚至可能为你工作:

sudo npm install socket.io

我以前从git安装了npm和节点,所有这些似乎都在工作,直到我尝试安装更少并且得到与OP相同的错误。

答案 10 :(得分:0)

如果安装在自定义目录中,Windows上也会发生同样的情况。您必须在默认路径下再次卸载并安装。

答案 11 :(得分:0)

我遇到了同样的问题,在线搜索后,唯一对我有用的是重新安装nodejs,nodejs-dev和npm。我按照本网站的指示: https://github.com/joyent/node/wiki/installing-node.js-via-package-manager

答案 12 :(得分:0)

安装最后一个稳定版本的节点

后,我在Windows 10上的解决方案
  • 删除主目录nodejs / node_modules中的当前npm目录
  • 将npm https://github.com/npm/npm.git的最后一次构建克隆到nodejs / node_modules目录

答案 13 :(得分:0)

在我的CENTOS 7案例中,我不得不删除旧版本的lib文件。

rm -rf /usr/lib/node_modules/*

之后yum reinstall nodejs解决了!

答案 14 :(得分:0)

我已经用这种方式解决了linux ubuntu上的问题:

<强> 1。我通过命令删除了nvm:sudo apt-get remove nvm

然后:

git clone https://github.com/creationix/nvm.git ~/nvm
//For start node you have to run this command every time if you do not add in .profile etc
. ~/nvm/nvm.sh
// Now Install latest stable version of NodeJS
nvm install v5.7.1
// Check installed nodejs version
nvm ls
//You can set which nodejs version you want to use
nvm use v5.7

答案 15 :(得分:0)

我做到了,它终于奏效了,必须不方便地在npm上安装

sudo apt-get purge --auto-remove node-gyp
npm install -g node-gyp