npm doesn't work, get always this error -> Error: Cannot find module 'are-we-there-yet'

npm doesn't work, get always this error -> Error: Cannot find module 'are-we-there-yet'

我尝试在 mac 和 Yosemite 上安装 grunt。节点已经安装在最新版本中。如果我在终端中输入 "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)

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

您删除了它的某些依赖项,从而破坏了 npm

are-we-there-yetnpmlog 的依赖项,它是 npm 本身的依赖项,而您以某种方式删除了它。对于这种情况,通常的简单解决方案是重新安装软件包,但如果 npm 无法运行,那将不起作用。幸运的是,npm tarball 预先捆绑了依赖项,因此 installing npm from scratch 就像解压 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 应该又可以工作了。

eush77 说了什么,但如果你在 Windows:

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

解压,替换nodejs node-modules目录下的"npm"目录 (默认 C:\Program Files\nodejs\node_modules)

我一直在狂热地尝试在我的 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 版本,这对我来说太旧了。

为了在节点上获得最新版本,我将使用 npm 安装 'n' 包。使用 n,我将安装最新版本的节点。

npm install -g n
n stable

对于 root 用户(我用来安装全局包),我需要将以下行添加到我的 ~/.bashrc 文件中,这将允许 root 用户访问 /usr/local/bin 命令。 (您可能不需要这一步)

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

此时我的node版本是4.0.0,是node最新的稳定版本。

现在更新 npm,这是有史以来最烦人的事情。

直接更新到最新版本总是会导致 "are-we-there-yet",我只能推测为 "NO, and Quit Asking or I will turn this node around"

相反,我发现首先通过版本 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 旅行,而孩子们不会在后面抱怨。

备注

由于我正在管理许多服务器,其中 none 默认带有节点,我发现自己不得不一遍又一遍地执行此任务..

因此我决定将这些说明变成脚本。

享受:

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

稍等片刻,全部安装完毕

对我来说,这与安装被损坏以及 ubuntu 存储库不兼容或最新有关。以下导致了一个有效的 npm/node 安装:

sudo curl -sL https://deb.nodesource.com/setup_4.x |须藤 -E bash - sudo apt-get install -y nodejs

https://github.com/nodesource/distributions

我按照上面的说明(eush77 说的)删除了 node_modules 文件夹中的 npm 文件夹。但是仍然有损坏的 link 导致此错误消息。

/usr/local/bin/npm: 没有那个文件或目录

所以删除损坏的 link:

rm /usr/local/bin/npm

然后像这样让它指向正确的位置:

sudo ln -s /usr/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm

进入全局node_modules目录(不知道的可以npm root -g)

$ cd /usr/local/lib/node_modules

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

您还可以从 https://nodejs.org/en/download/current/

重新安装 node

我使用找到的官方安装程序包重置了它:https://nodejs.org/en/

通过提供与当前 Node 版本不兼容的包,玩弄 n 和 nvm 最终为我损坏了 node_modules 包。

我怀疑它适用于其他环境,因为它结合了 Node 和 npm 安装。

即使我遇到了同样的问题,解决以下步骤的最简单方法对我也很有效。

  1. 卸载 Nodejs。

  2. 转到C:/Users/<user_name>/AppData/Roaming.

  3. 删除 npm 目录。

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

  5. 完成 现在尝试检查 (npm -v) 是否正常。

对我来说,我必须删除项目的 node_modules 文件夹。然后我清理了缓存以防万一并做了一个新的 npm i 并且它能够执行 node-sass post-install 而不是在 are-we-there-yet 丢失时出错。

如果在上面的解决方案中移动全局 node_modules 对您不起作用,请尝试:

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

我在调用 yarn dev 命令时在本地服务器上部署项目时遇到了同样的问题。

浏览了所有博客、文章和资料后,我仅通过简单的这 2 个命令就可以正常工作。

  1. npm list 检查它现在指向的版本。对我来说,当我收到此错误时。它指向系统。

  2. 我刚刚使用了 nvm use v{VERSION} 例如nvm use v10.5.0(对我来说)它开始工作了。所有错误都消失了,并且在调用 yarn dev 时成功部署了项目。在做任何其他事情之前先试试这个。我强烈推荐。