npm无法运行,总是出现此错误-> 错误:找不到模块'are-we-there-yet'

63
我试图在Yosemite上的Mac上安装Grunt。Node已经以最新版本安装。如果我在终端中键入“node -v”,那么我会得到“v0.12.5”的行。这很好。但是,当我想要使用npm安装某些内容时,我只会得到一个错误... 我尝试过“sudo npm install -g grunt-cli”、“sudo npm install npm -g”以及“npm -v”,但每次都出现相同的错误...
Error: Cannot find module 'are-we-there-yet'
at Function.Module._resolveFilename (module.js:336:15)
at Function.Module._load (module.js:278:25)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/usr/local/Cellar/node/0.10.22/lib/node_modules/npm/node_modules/npmlog/log.js:2:16)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)

有人知道问题是什么或者更好的解决方案吗?


它说找不到模块'are-we-there-yet'。这是什么? - Bidhan
1
我不知道。我没有安装任何新软件或其他东西,只是更新了node。sudo npm cache clean -f sudo npm install -g n sudo n stable之后,我尝试安装grunt。 - Gregor Voinov
它说你正在尝试安装一个名为“are-we-there-yet”的模块。你有没有偶然运行过 npm install are-we-there-yet 命令? - Bidhan
1
不,我没有尝试安装名为“are-we-there-yet”的模块。如果我尝试使用sudo npm install -g grunt-clinpm -v获取grunt或npm的版本,则会出现此错误。 - Gregor Voinov
11个回答

101
您通过删除一些依赖项破坏了 npmare-we-there-yetnpmlog 的一个依赖项,而 npm 本身也是其依赖项之一,您不知何故将其删除了。通常此类情况的简单解决方案是重新安装包,但如果 npm 无法运行,则无法解决该问题。幸运的是,npm tarball 预先捆绑了依赖项,因此 从头安装 npm 就像解压缩 tarball 一样简单。
1)前往全局 node_modules 目录(如果您能运行它,npm root -g 会输出什么)。
$ cd /usr/local/lib/node_modules

2) 移除损坏的npm目录或将其移动到其他位置(请注意,您可能需要提升权限才能执行此步骤及以下步骤):

$ mv npm /tmp

3)从存储库下载并解压最新的npm(替换您想要安装的版本,例如3.10.8):

$ curl -L registry.npmjs.com/npm/-/npm-{VERSION}.tgz | tar xz --transform="s:^package:npm:"

你可以使用此安装脚本自动化其中的一些操作:
$ curl -L https://www.npmjs.com/install.sh | sh

此时应该再次正常使用npm

2
我在Ubuntu 14.04的新安装中遇到了这个问题,这个方法对我起了作用。(根据版本号进行调整) - ICas
3
“/usr/local/lib/node_modules” 看起来有效。 - Horse
@Horse 是的,那是特定于 OP 的情况(请参见问题中的堆栈跟踪)。我刚刚改了它。 - eush77
2
用户破坏了自己的系统并不一定是真的。我在启动一个全新的 Vagrant VM 时遇到了同样的问题。请参阅 https://github.com/npm/npm/issues/9668 - Sarah Vessels
1
@Muzietto 在帖子中更新了 npm 版本。谢谢! - eush77
显示剩余6条评论

13

前往全局 node_modules 目录(如果您不知道,请使用 npm root -g 命令)

$ cd /usr/local/lib/node_modules

curl -L https://www.npmjs.com/install.sh | sh

12

我之前也遇到了同样的问题,下面这些步骤是最简单的解决方法,对我有效:

  1. 卸载 Nodejs。

  2. 打开路径 C:/Users/<user_name>/AppData/Roaming

  3. 删除 npm 目录。

  4. 重新安装 Nodejs (最新版本为 v6.11.3,包括 npm 3.10.10)。

  5. 完成后尝试运行命令 (npm -v),应该能正常工作了。


7

我一直在努力在我的CentOS 7机器上升级到最新版本的Node和NPM。

不幸的是,我已经遭遇这个错误将近一个星期了。最终我找到了一个有效的解决方案。

如果您的NPM目前无法正常工作,最简单的方法就是重新安装一个可用的版本。

我通过代码安装。假设已安装Git,以下命令可实现此目标:

cd ~
git clone https://github.com/nodejs/node.git nodejs_code
cd nodejs_code
./configure
make
make install

在安装了最新版本的npm和node之后,需要注意的是这不是稳定版本(而是直接从源头获取的最新版本)。

当前所安装的node版本是5.0.0-pre,对我来说太新了;而npm版本是2.14.4,对我来说太旧了。

为了获得node的最新版本,我将使用npm安装“n”包。通过使用“n”,我将安装node的最新版本。

npm install -g n
n stable

如果使用root用户(我用来安装全局包),需要在~/.bashrc文件中添加以下行,以允许root用户访问/usr/local/bin命令中的命令。(您可能不需要此步骤)

export PATH=/usr/local/bin:$PATH

目前我的node版本是4.0.0,这是最新的稳定版本。

现在需要更新npm,这是最让人头疼的事情。

直接更新到最新版本总是会出现"are-we-there-yet"错误,我只能猜测它的意思是“没有到达,别再问了,否则我就把node掉头”。

相反,我发现先安装版本3.3.3可以解决这个问题。

npm install -g npm@3.3.3

现在已经安装了3.3.3版本,可以正常运行而不会出现“are-we-there-yet”错误。

谢天谢地。孩子们,请把手臂放在车内,并系好安全带,因为我们快要到达目的地了......

npm install -g npm

通过输入最终命令,我成功使用了最新版本的npm,并搭配最新稳定版的node。目前撰写此文时,最新版本为3.3.5。

从这里开始,我的命令如下。

n stable
npm install -g npm

每次我运行这些命令时,我都可以毫无干扰地使用npm而不必担心孩子们在后面抱怨。
注意:
由于我管理的多个服务器都没有默认安装node,因此我一遍又一遍地执行此任务......
因此,我决定将这些说明转化为一个脚本。
享受吧:
importnode.sh
#!/bin/bash

cd ~
git clone https://github.com/nodejs/node.git nodejs_code
cd nodejs_code
git reset --hard
git pull origin master
./configure
make
make install

if [[ `cat ~/.bashrc |grep -E "PATH.*/usr/local/bin:.*"` ]];
then
    echo "Already Done";
else
    echo "export PATH=/usr/local/bin:\$PATH" >> ~/.bashrc;
    export PATH=/usr/local/bin:$PATH;
fi;

npm install -g n
n stable

npm install -g npm@3.3.3

npm install -g npm

把这段代码放入nodeimport.sh文件后,唯一需要做的就是使它可执行并执行它。
$ chmod +x importnode.sh
$ ./importnode.sh

稍等片刻,所有内容都将被安装。

请帮帮我,以上的解决方案对我没有用。 - shatakshi
你在按照这些说明操作之前,是否安装了最新版本的 Node.js/npm? - The Lazy Coder
这个答案太棒了!完美的指南。我整晚都在寻找这个问题的答案!我给一个大加一! - Joe Lloyd
是的,我已经尝试过使用apt-get remove nodejs、apt-get remove node和apt-get remove npm命令。然后我开始按照这些指示操作。 - shatakshi
告诉你,把你的问题发布在stackoverflow.com上,附上你已经尝试过的方法和输出结果。然后将链接放在这里,我会去看一下。凭空猜测很难解决问题。 - The Lazy Coder
@TheLazyCoder 谢谢,这个方法对我有用。实际上问题是当我删除npm目录时,npm目录的路径没有被删除。你的解决方案对我很有效。谢谢。 - shatakshi

7

如果您使用的是Windows操作系统,请按照eush77的建议执行以下步骤:

下载最新的软件包:https://nodejs.org/download/release/npm/

解压文件,并将"npm"文件夹替换掉nodejs node-modules目录下的同名文件夹 (默认路径为C:\Program Files\nodejs\node_modules)。


2
你也可以从 https://nodejs.org/en/download/current/ 重新安装 node。

1
我按照上面的指示(eush77所说的)删除了node_modules文件夹中的npm文件夹。但仍存在损坏的链接,导致出现此错误信息。
/usr/local/bin/npm: 没有那个文件或目录
因此,请删除损坏的链接:
rm /usr/local/bin/npm
然后让它指向正确的位置,像这样:
sudo ln -s /usr/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm

0

我使用官方安装程序 https://nodejs.org/en/ 进行了重置。

通过使用 n 和 nvm 进行试验,最终导致我安装的 node_modules 包被提供了与当前 Node 版本不兼容的包,从而损坏了它们。

我怀疑这对其他环境也适用,因为它同时耦合了 Node 和 npm 安装。


0

0

对我来说,我必须删除我的项目的node_modules文件夹。然后我清除了缓存以防万一,并进行了新的npm i,它能够执行node-sass的后安装并不会出现are-we-there-yet丢失的错误。

如果像上面的解决方案中移动全局node_modules无法解决您的问题,请尝试以下操作:

  1. 删除您的项目本地的node_modules
    • 在您的项目根目录下:rm -rf node_moduldes
  2. npm cache clean -f
  3. npm i

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接