关于node.js:npm不起作用,总是得到这个错误 – >

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

我试着在约塞米蒂的Mac上安装Grunt。节点已安装在最新版本中。如果我在终端中键入"node-v",我会得到v0.12.5。那很好。但当我想安装新产品经理的东西,我只得到一个错误…

我尝试了"sudo-npm install-g grunt cli","sudo-npm install npm-g",并且使用"npm-v"我总是会得到这个错误…

1
2
3
4
5
6
7
8
9
10
11
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. (/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无法运行,这就不起作用。幸运的是,npmtarball预先与依赖项捆绑在一起,因此从头安装npm就像打开tarball一样简单。

1)转到global node_modules目录(如果可以运行,npm root -g会打印什么):

1
$ cd /usr/local/lib/node_modules

2)删除断开的npm目录或将其移到其他地方(请注意,您可能需要提升此目录和以下步骤的权限):

1
$ mv npm /tmp

3)从注册表下载并解包新的npm(要安装的替代版本,如3.10.8

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

您可以使用此安装脚本自动执行其中的一些操作:

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

此时,npm应再次工作。


转到global node_modules目录(如果不知道,请访问npm root-g)

1
2
3
$ cd /usr/local/lib/node_modules

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


我一直在狂热地尝试在我的Centos7机器上找到最新版本的node和npm。

不幸的是,我已经被这个错误困扰了近一个星期了。我终于找到了一个可行的解决方案。

如果您的NPM当前已损坏,最简单的方法是重新安装一个工作版本。

我是根据代码安装的。假设安装了git,那么以下命令将实现这一目标

1
2
3
4
5
6
cd ~
git clone https://github.com/nodejs/node.git nodejs_code
cd nodejs_code
./configure
make
make install

在您安装了新的NPM和节点副本之后,顺便说一句,它不是稳定版本(而是从源代码右边的出血边缘)。

编写时安装的节点版本是5.0.0-pre,对我来说太新了,而NPM是2.14.4版,对我来说太旧了。

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

1
2
npm install -g n
n stable

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

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

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

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

直接更新到最新版本总是会导致"我们还在吗",我只能猜测为"不,退出询问,否则我会扭转这个节点"

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

1
npm install -g [email protected]

现在安装了3.3.3版,并且可以在不出现"我们还在吗"错误的情况下工作。

谢天谢地。把你的胳膊放在里面,把安全带系好,孩子们,因为我们快到了……

1
npm install -g npm

有了这个最后的命令,我可以使用最新版本的NPM,以及最新稳定版本的node。写这篇文章的时候是3.3.5

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

1
2
n stable
npm install -g npm

每次我从这里开始运行这些程序,我都会得到不受干扰的NPM旅行,而孩子们也不会在后面抱怨。

注释

由于我正在管理许多服务器,默认情况下这些服务器都不随节点一起提供,因此我发现自己必须一遍又一遍地执行此任务。

因此,我把这些指令变成了一个脚本。

享受:

进口商品

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/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 [email protected]

npm install -g npm

在将其放入nodeimport.sh之后,唯一要做的就是使其可执行并执行。

1
2
$ chmod +x importnode.sh
$ ./importnode.sh

等一下,所有的都安装好了。


什么eush77说,但如果你在窗户上:

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

解包并替换nodejs node modules目录中的"npm"目录(默认情况下C:Program Filesodejsode_modules)


即使我也有同样的问题,最简单的方法来解决下面的步骤对我来说也很有效。

1)卸载nodejs。

2)去EDOCX1[4]

3)删除npm目录。

4)重新安装Nodejs(最新版本V6.11.3,包括NPM 3.10.10)。

5)现在试着检查(npm -v会正常工作。


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


我按照上面的说明(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


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

在浏览了所有的博客、文章和东西之后,我只需要简单地使用这两个命令就可以让它工作。

  • npm list检查它现在指向的版本。对我来说,当我得到这个错误的时候。它指向系统。

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


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

    如果移动Global node_modules不适合您,请尝试:

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

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

    通过提供与当前节点版本不兼容的包,使用n和nvm最终损坏了我的节点模块包。

    我怀疑它可以在其他环境中工作,因为它将节点和NPM安装结合在一起。


    对我来说,这与安装被破坏以及Ubuntu存储库不兼容或是最近的版本有关。以下结果导致NPM/节点安装工作正常:

    sudo curl-sl https://deb.nodesource.com/setup_.x_sudo-e bash-sudo-apt-get安装-y nodejs

    https://github.com/nodesource/distributions