使用npm命令时找不到模块'npmlog'错误消息

时间:2015-12-01 00:17:25

标签: javascript node.js command-line npm

今天是我第一份工作的第一天,在通过更新我的Mac(OSX)上的节点和npm设置我的开发环境后,我似乎已经破坏了一些东西。每次我尝试在命令行中使用npm(npm init,npm install等)时都会收到以下错误消息:

  

module.js:339

     

扔错了;

     

错误:找不到模块'npmlog'

     

在Function.Module._resolveFilename(module.js:337:15)

     

在Function.Module._load(module.js:287:25)

     

在Module.require(module.js:366:17)

     

at require(module.js:385:17)

     

at /usr/local/lib/node_modules/npm/bin/npm-cli.js:20:13

     

at Object。 (/usr/local/lib/node_modules/npm/bin/npm->cli.js:76:3)

     

在Module._compile(module.js:425:26)

     

at Object.Module._extensions..js(module.js:432:10)

     

在Module.load(module.js:356:32)

     

在Function.Module._load(module.js:311:12)

没有太多错误信息可以关闭,堆栈跟踪也没有帮助我这么多。这是我尝试过的:

  1. 搜索了Stackoverflow,尽管存在类似的问题,但人们已经能够使用npm <something>来解决他们的问题,这是我无法做到的。
  2. 卸载并重新安装npm - 无法正常工作,因为我根本无法使用npm命令,因此sudo npm uninstall npm -g之类的内容无效。
  3. npmlog目录中删除.npm目录,然后再将github repo直接克隆到该目录。
  4. 希望你们中的一个人之前遇到过这个问题,或者想知道如何处理它。任何帮助表示赞赏。

10 个答案:

答案 0 :(得分:17)

这是一个很好的链接Fixing npm On Mac OS X for Homebrew Users

尝试在mac

下升级node.js时,使用以下命令

rm -rf /usr/local/lib/node_modules
brew uninstall node
brew install node --without-npm
echo prefix=~/.npm-packages >> ~/.npmrc
curl -L https://www.npmjs.com/install.sh | sudo sh

答案 1 :(得分:17)

以下是对我有用的步骤:

$ sudo rm -rf /usr/local/bin/npm
$ sudo rm -rf /usr/local/lib/node_modules/npm
$ brew uninstall node
$ brew install node

答案 2 :(得分:9)

尝试curl -0 -L http://npmjs.org/install.sh | sudo sh关注重定向。另请注意,我在sudo sh命令之前添加了sudo,具体取决于您的用户权限。

答案 3 :(得分:5)

我刚刚在Mac上遇到过这个问题,经过仔细检查,我觉得问题是在某些情况下,在Node应用程序目录中node/bin目录中的链接到{{ npm中的1}}被文件本身替换,这就是它失败的原因(以及为什么所有各种脚本方法都修复它,因为它们正确地保留了文件链接)。

如果我使用lib/node_modules/npm/bin复制node-v6.9.4-darwin-x64中的内容,那么我就会遇到此问题,但如果我使用Finder复制文件,那么我就不会这样做。因此,如果您不想使用Finder,则可以通过手动重新创建cp链接来修复此问题(或者,lnmv也可以使用;我没有&# 39; t测试他们)。

希望这有助于有人来这里解决这个问题。

编辑:我在Mac上偶然发现了问题的原因(无论如何,我的特定情况):我总是使用rsync -a来复制目录。这是因为我老了,不再学习新事物了。正确的方法是cp -r,它可以正确地复制所有内容。

答案 4 :(得分:3)

我没有必要像刚刚重新开始那样“修复”这个问题。我使用这篇文章来做到这一点:How do I completely uninstall Node.js, and reinstall from beginning (Mac OS X)

如果有其他人知道如何解决问题或知道我做了什么导致它,我仍然会非常感兴趣。

答案 5 :(得分:3)

在我的情况下,我只是     brew uninstall node 并从官方网站下载并为我工作

答案 6 :(得分:3)

我在运行sudo npm install npm -g之后在Fedora 27上点击了这个。

问题是我最初通过sudo dnf install nodejs安装了Node.js,它将npm安装到/usr/local/bin/usr/local/lib。但是,正在运行sudo npm install会在/usr/bin/

中安装单独的版本

运行which npm显示已安装额外的npm。然后以下为我清理了一切:

$ sudo rm /usr/bin/npm
$ sudo rm -rf /usr/lib/node_modules/npm
$ dnf remove -y nodejs
$ dnf install -y nodejs

答案 7 :(得分:0)

我遇到了同样的错误。这是在未连接到互联网的服务器上。我在Github上看过一个线程,提到有时在执行复制或其他文件操作时可以删除符号链接。所以我做了一个&#34;发现&#34;在有问题的服务器的符号链接的节点目录上,找不到。在工作服务器上执行相同操作时发现了符号链接文件。

我去了 NODE_HOME / bin 并做了 ls -l <​​/ strong>

果然我有一个npm文件。在工作服务器上执行相同的步骤,npm文件是符号链接。为了修复有问题的服务器,我执行了以下操作:

rm npm

ln -s ../lib/node_modules/npm/bin/npm-cli.js npm

答案 8 :(得分:0)

在REDHAT linux中安装量角器时出现了同样的错误

  

NPM

文件

  

/node-v6.10.2-linux-x64/bin/npm

表示模块路径如下:

之前的代码

var log = require('npmlog')

后的代码
var log = require('/node-v6.10.2-linux-x64/lib/node_modules/npm/node_modules/npmlog')

答案 9 :(得分:0)

对我来说,我运行了brew uninstall node,然后从nodejs.org下载了最新版本并且运行良好。