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

Posted

技术标签:

【中文标题】使用 npm 命令时找不到模块“npmlog”错误消息【英文标题】:Cannot find module 'npmlog' error message when using npm command 【发布时间】:2016-03-04 18:57:15 【问题描述】:

今天是我第一份工作的第一天,通过在我的 Mac (OSX) 上更新 node 和 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)

在需要时(module.js:385:17)

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

在对象。 (/usr/local/lib/node_modules/npm/bin/npm->cli.js:76:3)

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

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

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

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

没有太多的错误消息可以发出,堆栈跟踪也对我没有太大帮助。这是我尝试过的:

    在 *** 周围搜索,虽然有类似的问题,但人们已经能够使用 npm <something> 解决他们的问题,而我做不到。 卸载并重新安装 npm - 不起作用,因为我根本无法使用 npm 命令,所以像 sudo npm uninstall npm -g 这样的东西不起作用。 从.npm 目录中删除npmlog 目录,然后再次将github repo 直接克隆到该目录。

希望你们中的某个人以前遇到过这种情况,或者知道如何处理它。任何帮助表示赞赏。

【问题讨论】:

【参考方案1】:

这是一个很好的链接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

【讨论】:

感谢您的链接。它为我省去了很多麻烦。 在 OS X El Capitan 上安装 npm 3.9.3 时,我在执行此操作后收到了 npm: command not found。我必须将export PATH="$HOME/.npm-packages/bin:$PATH" 添加到我的.bash_profile【参考方案2】:

以下是对我有用的步骤:

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

【讨论】:

【参考方案3】:

尝试curl -0 -L @987654321@ | sudo sh 关注重定向。另请注意,我根据您的用户权限在 sudo sh 命令之前添加了 sudo。

【讨论】:

【参考方案4】:

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

如果我从node-v6.9.4-darwin-x64cp 复制内容,则会出现此问题,但如果我使用Finder 复制文件,则不会。因此,如果您不想使用 Finder,可以通过手动重新创建带有 ln 的链接来修复它(或者,mvrsync -a 也可以工作;我还没有测试过它们)。

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

编辑:我只是偶然发现了 Mac 上出现问题的原因(无论如何,对于我的特定场景):我一直使用 cp -r 来复制目录。这是因为我老了,不再学习新东西了。正确的方法是cp -R,它正确地复制了所有内容。

【讨论】:

谢谢,我遇到了完全相同的问题。我从 nodejs.org 下载了一个预构建的包,在我的 mac 上解压,然后通过 SFTP 将它上传到我的目标系统。一旦在目标系统上,符号链接被破坏,导致上述错误消息。删除断开的链接:node/bin/npm 并将其替换为 ln -s node/lib/node_modules/npm/bin/npm-cli.js node/bin/npm 已解决问题。 我应该提到使用ln -nfs应该删除原始文件并用软链接替换它。为您省了一步!虽然它有时会失败。 我使用 scp 从一台服务器复制到另一台服务器并遇到了同样的问题。 这个答案为我提供了直接从网站下载 macOS 二进制文件时的解决方案,尽管需要一段时间才能找到它的根源:使用 cp -R 而不是 cp -r【参考方案5】:

我不一定像重新开始那样“解决”问题。我使用这篇文章这样做:How do I completely uninstall Node.js, and reinstall from beginning (Mac OS X)

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

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

我在运行 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

【讨论】:

谢谢,这为我节省了一些时间,因为我有与您相同的设置。每次我尝试通过 npm 更新时都会出现错误 是的 - 我认为你不能 - 如果你使用的是 dnf,那么你必须等到 npm 的新版本通过 dnf 发布【参考方案8】:

我遇到了同样的错误。这是在未连接到互联网的服务器上。我在 Github 上看到一个帖子,提到有时在执行复制或其他文件操作时可以删除符号链接。所以我在节点目录上“查找”了有问题的服务器的符号链接,但没有找到。在工作服务器上执行相同操作会发现符号链接文件。

我去了 NODE_HOME/bin 并做了一个 ls -l

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

rm npm

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

【讨论】:

【参考方案9】:

在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')

【讨论】:

【参考方案10】:

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

【讨论】:

以上是关于使用 npm 命令时找不到模块“npmlog”错误消息的主要内容,如果未能解决你的问题,请参考以下文章

npm:在linux ubuntu中使用npm命令时找不到模块semver错误[重复]

npm 错误:通过 CLI 构建创建反应应用程序时找不到模块'.../immer.js'

npm:在 Electron 应用程序中执行命令时找不到命令

运行 gulp app:serve rails 时找不到模块“require-dir”错误

接收TS2304:找不到名称'文件'| TS2304:运行“npm run tsc”命令时找不到名称“ReadableStream”

错误:使用节点命令运行 JS 文件时找不到模块“firebase”