32

这是我尝试为 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

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

4

16 回答 16

38

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

而是尝试:

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

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

于 2012-11-03T00:22:33.847 回答
20

我有同样的问题。

sudo npm install 

为我解决了。

于 2012-10-24T08:55:35.763 回答
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)

所以我试图找出 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,所以它变得很困惑。

于 2012-08-26T22:24:48.637 回答
13

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

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 ...
于 2013-03-15T04:29:45.517 回答
6

只为我的两分钱。我安装

sudo npm install -g graceful-fs

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

于 2014-12-17T00:02:47.977 回答
2

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

sudo npm install graceful-fs
于 2013-11-18T19:53:32.240 回答
1

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

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

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

于 2012-07-09T22:59:09.960 回答
1

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

科尔多瓦中的 npm 错误,科尔多瓦使用私有 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

对我来说效果很好!

于 2016-01-20T04:39:10.033 回答
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

于 2018-10-26T18:55:25.650 回答
0

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

于 2014-08-12T17:42:17.917 回答
0

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

于 2013-07-23T16:31:23.190 回答
0

当谈到 linux 时,我是一个自认的布偶,但我摸索到了一个解决方案。我正在运行 ubuntu 12.04 并且遇到了同样的问题。试过这个,它对我有用,也许比我更好的人可以解释为什么甚至可能对你有用:

sudo npm install socket.io

我之前从 git 安装了 npm 和 node 并且似乎都在工作,直到我尝试安装 less 并得到与 OP 相同的错误。

于 2012-11-21T11:05:52.577 回答
0

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

rm -rf /usr/lib/node_modules/*

之后就yum reinstall nodejs解决了!

于 2016-11-06T16:22:27.133 回答
0

安装最后一个稳定版本的节点后,我在 Windows 10 上的解决方案

于 2016-04-20T19:37:43.200 回答
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
于 2018-05-31T06:43:17.790 回答
0

我这样做了,它终于奏效了,必须通过 npm 安装而不是 apt

sudo apt-get purge --auto-remove node-gyp
npm install -g node-gyp
于 2020-02-02T10:31:24.663 回答