使用 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-x64
和cp
复制内容,则会出现此问题,但如果我使用Finder 复制文件,则不会。因此,如果您不想使用 Finder,可以通过手动重新创建带有 ln
的链接来修复它(或者,mv
或 rsync -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”