安装nvm后无法卸载全局npm包

58

我发现了几个与此问题相关的线程,但似乎没有一个是特别涉及我的情况,而且我无法使用我找到的建议解决这个问题。

当我运行npm uninstall -g "some package"时,它只返回:up to date in .043s(全局包仍然存在)

例如,我试图卸载babel-cli,但在运行npm uninstall -g babel-cli之后,我仍然可以使用cli

这是在我卸载了nodenpm并使用nvm重新安装后开始出现的。 我想知道在卸载node时是否错过了什么,并且导致了这个问题。 我检查了我的点文件并注意到我仍然有一个.npm位于.nvm之外。那正常吗?感谢您提前提供任何建议。


1
这可能是由于在您的PATH环境变量中有多个路径并且安装了不同版本的节点的babel-cli引起的。当您运行which babelwhich babel-cli(无论可执行文件名是什么)时返回什么? - Chris911
/usr/local/bin/babel - Luke_io
看起来它是全局安装的。据我所知,nvm 不会在那里安装可执行文件。你是否可能还使用 macOS 上的另一个软件包管理器(如 brew)安装了 babel? - Chris911
我以为我遇到了这个问题,但是我在包名中省略了“@”。如果你和我处于同样的情况,请记得加上“@”。例如:npm uninstall -g @angular/cli - mattliu
8个回答

83

(nvm维护者在此)

您可以使用npm ls -g --depth=0查看可以使用npm uninstall -g卸载的内容列表。如果您在那里没有看到要卸载的内容,但仍然可以访问它,则如果它是使用npm安装的,则可能已经与您系统版本的node一起安装。

您可以使用nvm use system && npm ls -g --depth=0快速验证这一点。如果您在那里看到包,那么在使用系统版本时,您可以使用npm uninstall -g卸载它。


3
我没有安装系统级别的npm(只有nvm)。我可以通过命令npm ls -g --depth=0看到要卸载的包,但是还是无法卸载它。此外,npm ls -g --depth=0输出以下内容:在列出的包之后,会输出npm ERR! invalid: minizlib@1.0.3 /home/<...>/.nvm/versions/node/v8.9.4/lib/node_modules/npm/node_modules/tar/node_modules/minizlib - mikebrsv
9
嗯,在这种情况下,看起来特定的 Node 安装版本 (v8.9.4) 所使用的 npm 副本已经损坏了。最简单的解决方案是卸载该节点版本并重新安装 - nvm deactivate && nvm uninstall 8.9.4 && nvm install 8.9.4 应该就可以了。 - LJHarb
2
看起来确实是这样。重新安装后一切正常。 - mikebrsv
2
天啊,这为什么不在某个地方用粗体写出来呢?:D 非常感谢。 - user2831723
2
我使用的是macOS,已经很久没有安装过了 - 不确定。我通过从/usr/local/bin中删除命令来解决了这个问题。 - Daniel Cooke
显示剩余6条评论

17
抱歉,我知道这是一个老问题,但我们已经到了2019年,对我来说仍然是个问题...我发现需要在NVM关心的路径上调用npm的卸载命令。
以下是对我有效的方法:
Tue Aug 20 08:09:07 ~
<username> $ npm uninstall -g edgemicro@3.0.4
up to date in 0.051s
Tue Aug 20 08:09:13 ~
<username> $ edgemicro --version
current nodejs version is v8.16.0
current edgemicro version is 3.0.4
3.0.4
// Clearly didn’t work :(

// Let’s try sudo ….
Tue Aug 20 08:09:18 ~
<username> $ sudo npm uninstall -g edgemicro@3.0.4
Password:
up to date in 0.035s
Tue Aug 20 08:10:20 ~
<username> $ edgemicro --version
current nodejs version is v8.16.0
current edgemicro version is 3.0.4
3.0.4
// Still didn’t work :(

// So where is this seemingly immortal executable?
Tue Aug 20 08:10:28 ~
<username> $ which edgemicro
/Users/<username>/.nvm/versions/node/v8.16.0/bin/edgemicro
// It’s under some NVM specific path it seems.
// It seems NPM is also under some NVM specific path, kinda expected.
Tue Aug 20 08:10:33 ~
<username> $ which npm
/Users/<username>/.nvm/versions/node/v8.16.0/bin/npm

// So let’s use that exact npm to perform the uninstall …
Tue Aug 20 08:10:42 ~
<username> $ /Users/<username>/.nvm/versions/node/v8.16.0/bin/npm uninstall -g edgemicro
npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but npm-shrinkwrap.json was generated for lockfileVersion@0. I'll try to do my best with it!
removed 2442 packages in 25.851s
Tue Aug 20 08:11:24 ~
<username> $ which edgemicro
Tue Aug 20 08:11:29 ~
<username> $ // Done.

1
我还需要执行这个命令 /usr/local/bin/npm uninstall -g create-react-app - Trevor Allred
对我很有效。不知道为什么我们需要经历那一切... - KayZee
谢谢!虽然对我来说需要多走一步,但我打开了你找到的目录中的Finder,以删除我的软件包。 - PhoenixB

6

以上解决方案均未对我有效。

我的nvm版本是1.0.1 - 很奇怪。

所以,建议的任何方法都不起作用:

nvm deactivate && nvm uninstall..

对我有用,因为它们不是命令。

我试图卸载 create-react-app

which create-react-app
/usr/local/bin/create-react-app

我刚刚做了最明显和天真的事情。

rm -rf /usr/local/bin/create-react-app

所有的一切都很好!


1
nvm deactivate && nvm uninstall web-push -g 对我很有用。谢谢@daniel。 - daydreamer

3

我试图使用npx安装最新版的create-react-app,但即使我全局删除它,仍然会收到相同的警告。

You are running `create-react-app` 4.0.3, which is behind the latest release (5.0.0).

We no longer support global installation of Create React App.

Please remove any global installs with one of the following commands:
- npm uninstall -g create-react-app
- yarn global remove create-react-app

我认为这可能与npm缓存有关。

前往:

C:\Users\{YOUR-LOCAL-USERNAME}\AppData\Local\npm-cache\_npx

您会发现一些随机命名的文件夹,例如。这些文件夹包含您通过尝试使用的最新软件包。
因此,现在,您应该找到包含要删除的软件包的文件夹。您可以通过阅读每个文件夹中的来找到它。
当您找到正确的目录时,请使用本地卸载命令(而不是npm -g uninstall)在此目录中卸载您要删除的软件包:
npm uninstall create-react-app

现在你可以通过npx自由使用最新版本的包。


0

我尝试了这里的一些答案,但对我都没有用。最终我自己像这样删除了它:

which <package_name>(或者你可以使用 "which npm")

进入可执行文件所在的位置,例如我的情况是:

/c/Program Files/nodejs/<package_name>

进入其中的 node_modules 目录:

cd /c/Program Files/nodejs/node_modules

在其中找到你的包名,并像这样将其删除:

rm -rf <package_name>

我还删除了 /c/Program Files/nodejs/ 中文件的所有引用,例如:

rm -rf /c/Program Files/nodejs/<package_name>(可执行文件)

rm -rf /c/Program Files/nodejs/<package_name>.ps1

rm -rf /c/Program Files/nodejs/<package_name>.cmd


0

我曾经遇到过同样的问题,以下解决方法对我有效。 请在命令前使用sudo来解决,例如sudo npm uninstall -g "some package"

不使用sudo: []$ npm uninstall -g truffle 0.082秒内更新完成

尝试使用sudo后: []$ sudo npm uninstall -g truffle [sudo] shahid的密码: 1.902秒内删除了81个包

[]$:truffle bash: /usr/bin/truffle: 没有那个文件或目录


-1
无论您调用多少次npm uninstall babel,
或者Yarn uninstall -g babel
或者Yarn uninstall -g babel-cli,
它都会显示已更新。当您通过输入“babel-help”检查它是否仍然存在时,
您会得到这个-> babel仍然在您的Mac中某个地方 我知道这很令人沮丧。所以我找到了这些文件存储在本地的位置,并在从本地存储中删除它们后,我终于得到了-> 最终我的系统不再理解babel是什么。我们真正想要的 我是如何找到它的:
Finder的搜索结果不会给您全局babel存储路径。 我发现有一个名为/ usr的文件夹在我们的实际根目录“Macintosh HD”中 它是隐藏的
所以, 选择finder ->转到文件夹.. 并键入“/ usr”。

一个新的查找器窗口将打开,它将显示其中所有的文件。 现在你可以四处走动,检查你安装的所有文件,有些可能被遗忘了,从未有机会删除。

前往usr/local/bin -> 在这里你会找到你全局安装的文件。 如下所示 - > 快捷方式目录

同样,你可以看到图标上有箭头标志,表示这些只是快捷方式。删除它们将切断链接,但文件仍然存在于某个地方。

要删除这些文件,请右键单击图标并选择“显示原始文件”

你将被重定向到一个文件夹,在那里你会找到babel.js文件。

记住,这只是一个文件。要完全删除babel-cli,请在查找器中选择列视图,你可以向左滚动并检查其父目录。 这就是实际的安装位置。

最终路径部分1

最终路径部分2

你可以看到,就像基本的节点模块被安装在我们的本地Web项目中一样,babel-cli和类似的软件包以类似的格式被安装在这些全局位置。

现在,您可以右键单击babel-cli文件夹并将其移到垃圾桶中。

希望猎物终于结束了。


-2

我知道这是一个老问题,但如果上面的选项都不起作用,请尝试以下方法。进入终端或命令提示符,输入“open /usr/local/bin”。它将打开“usr”文件夹的隐藏文件夹,并查找您想要删除的文件。希望这可以帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接