Cli: [错误] npm更新--global失败:npm错误! 全局需要添加或rm选项

创建于 2020-10-14  ·  44评论  ·  资料来源: npm/cli

当前行为:

$ npm install --global [email protected]

changed 1 package, and audited 1 package in 2s

found 0 vulnerabilities

$ npm update --global
npm ERR! global requires an add or rm option

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/felipesantos/.npm/_logs/2020-10-14T13_14_27_261Z-debug.log

$ npm update --global semver
npm ERR! global requires an add or rm option

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/felipesantos/.npm/_logs/2020-10-14T13_17_01_600Z-debug.log

$ cat /home/felipesantos/.npm/_logs/2020-10-14T13_14_27_261Z-debug.log
0 verbose cli [
0 verbose cli   '/home/felipesantos/.nvm/versions/node/v12.19.0/bin/node',
0 verbose cli   '/home/felipesantos/.nvm/versions/node/v12.19.0/bin/npm',
0 verbose cli   'update',
0 verbose cli   '--global'
0 verbose cli ]
1 info using [email protected]
2 info using [email protected]
3 timing config:load:defaults Completed in 1ms
4 timing config:load:file:/home/felipesantos/.nvm/versions/node/v12.19.0/lib/node_modules/npm/npmrc Completed in 1ms
5 timing config:load:builtin Completed in 1ms
6 timing config:load:cli Completed in 2ms
7 timing config:load:env Completed in 0ms
8 timing config:load:file:/mnt/c/Users/felip/.npmrc Completed in 1ms
9 timing config:load:project Completed in 3ms
10 timing config:load:file:/home/felipesantos/.npmrc Completed in 0ms
11 timing config:load:user Completed in 0ms
12 timing config:load:file:/home/felipesantos/.nvm/versions/node/v12.19.0/etc/npmrc Completed in 0ms
13 timing config:load:global Completed in 0ms
14 timing config:load:cafile Completed in 0ms
15 timing config:load:validate Completed in 0ms
16 timing config:load:setUserAgent Completed in 1ms
17 timing config:load:setEnvs Completed in 0ms
18 timing config:load Completed in 8ms
19 verbose npm-session 38aa94d0b0d83ff4
20 timing npm:load Completed in 14ms
21 timing arborist:ctor Completed in 0ms
22 timing command:update Completed in 2ms
23 verbose stack Error: global requires an add or rm option
23 verbose stack     at Arborist.buildIdealTree (/home/felipesantos/.nvm/versions/node/v12.19.0/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:185:29)
23 verbose stack     at Arborist.[loadTrees] (/home/felipesantos/.nvm/versions/node/v12.19.0/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:186:17)
23 verbose stack     at Arborist.reify (/home/felipesantos/.nvm/versions/node/v12.19.0/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:121:27)
23 verbose stack     at update (/home/felipesantos/.nvm/versions/node/v12.19.0/lib/node_modules/npm/lib/update.js:34:13)
23 verbose stack     at cmd (/home/felipesantos/.nvm/versions/node/v12.19.0/lib/node_modules/npm/lib/update.js:15:27)
23 verbose stack     at Object.[_runCmd] (/home/felipesantos/.nvm/versions/node/v12.19.0/lib/node_modules/npm/lib/npm.js:112:7)
23 verbose stack     at fn (/home/felipesantos/.nvm/versions/node/v12.19.0/lib/node_modules/npm/lib/npm.js:46:40)
23 verbose stack     at Object.<anonymous> (/home/felipesantos/.nvm/versions/node/v12.19.0/lib/node_modules/npm/lib/cli.js:56:7)
24 verbose cwd /mnt/c/Users/felip
25 verbose Linux 4.19.104-microsoft-standard
26 verbose argv "/home/felipesantos/.nvm/versions/node/v12.19.0/bin/node" "/home/felipesantos/.nvm/versions/node/v12.19.0/bin/npm" "update" "--global"
27 verbose node v12.19.0
28 verbose npm  v7.0.0
29 error global requires an add or rm option
30 verbose exit 1

预期行为:

在v7.0.0之前,运行npm update --global将更新全局安装的所有已过时的软件包。

重现步骤:

安装一个过时的全局软件包,然后尝试更新所有软件包。

环境:

  • 作业系统:Ubuntu 20.04.1
  • 节点:12.19.0
  • npm:7.0.0
Bug Release 7.x

最有用的评论

看起来v7.0.9也无法解决该问题。

该错误已得到确认,并计划在即将发布的版本中进行修复。

所有44条评论

也可以为我确认这种情况...

➜  event-centre npm -v 
7.0.0
➜  event-centre npm -g update
npm ERR! global requires an add or rm option

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/michael/.npm/_logs/2020-10-17T21_49_17_159Z-debug.log
➜  event-centre cat /Users/michael/.npm/_logs/2020-10-17T21_49_17_159Z-debug.log 
0 verbose cli [
0 verbose cli   '/Users/michael/.nvm/versions/node/v14.13.0/bin/node',
0 verbose cli   '/Users/michael/.nvm/versions/node/v14.13.0/bin/npm',
0 verbose cli   '-g',
0 verbose cli   'update'
0 verbose cli ]
1 info using [email protected]
2 info using [email protected]
3 timing config:load:defaults Completed in 1ms
4 timing config:load:file:/Users/michael/.nvm/versions/node/v14.13.0/lib/node_modules/npm/npmrc Completed in 0ms
5 timing config:load:builtin Completed in 0ms
6 timing config:load:cli Completed in 2ms
7 timing config:load:env Completed in 0ms
8 timing config:load:file:/Volumes/Developer/event-centre/.npmrc Completed in 0ms
9 timing config:load:project Completed in 1ms
10 timing config:load:file:/Users/michael/.npmrc Completed in 1ms
11 timing config:load:user Completed in 1ms
12 timing config:load:file:/Users/michael/.nvm/versions/node/v14.13.0/etc/npmrc Completed in 0ms
13 timing config:load:global Completed in 0ms
14 timing config:load:cafile Completed in 0ms
15 timing config:load:validate Completed in 0ms
16 timing config:load:setUserAgent Completed in 1ms
17 timing config:load:setEnvs Completed in 0ms
18 timing config:load Completed in 7ms
19 verbose npm-session 7a6ea29e573a5509
20 timing npm:load Completed in 12ms
21 timing arborist:ctor Completed in 0ms
22 timing command:update Completed in 3ms
23 verbose stack Error: global requires an add or rm option
23 verbose stack     at Arborist.buildIdealTree (/Users/michael/.nvm/versions/node/v14.13.0/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:185:29)
23 verbose stack     at Arborist.[loadTrees] (/Users/michael/.nvm/versions/node/v14.13.0/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:186:17)
23 verbose stack     at Arborist.reify (/Users/michael/.nvm/versions/node/v14.13.0/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:121:27)
23 verbose stack     at update (/Users/michael/.nvm/versions/node/v14.13.0/lib/node_modules/npm/lib/update.js:34:13)
23 verbose stack     at cmd (/Users/michael/.nvm/versions/node/v14.13.0/lib/node_modules/npm/lib/update.js:15:27)
23 verbose stack     at Object.[_runCmd] (/Users/michael/.nvm/versions/node/v14.13.0/lib/node_modules/npm/lib/npm.js:112:7)
23 verbose stack     at fn (/Users/michael/.nvm/versions/node/v14.13.0/lib/node_modules/npm/lib/npm.js:46:40)
23 verbose stack     at Object.<anonymous> (/Users/michael/.nvm/versions/node/v14.13.0/lib/node_modules/npm/lib/cli.js:56:7)
24 verbose cwd /Volumes/Developer/event-centre
25 verbose Darwin 19.6.0
26 verbose argv "/Users/michael/.nvm/versions/node/v14.13.0/bin/node" "/Users/michael/.nvm/versions/node/v14.13.0/bin/npm" "-g" "update"
27 verbose node v14.13.0
28 verbose npm  v7.0.0
29 error global requires an add or rm option
30 verbose exit 1

npm更新--global失败:npm错误! 全局需要添加或rm选项

如果我只想更新全局软件包,则会出现相同的错误:

npm -g update

要么

npm -g upgrade

在Windows和Debian 10上使用v7.0.1可以看到它。

这些为6.x工作

似乎在v7.0.2中已修复

我仍然在7.0.2中看到相同的问题

$ npm -v
7.0.2

$ npm -g更新
npm ERR! 全局需要添加或rm选项

我可以在Windows 10 x64的npm 7.0.3中确认相同的行为。 刚刚从npm @ 6升级并获得了此惊喜。

macOS nodejs v15上的npm v 7.0.2存在相同的问题。

npm ERR! 全局需要添加或rm选项
npm ERR! 可以在以下位置找到此运行的完整日志:
npm ERR! /Users/user/.npm/_logs/2020-10-21T09_28_30_807Z-debug.log

[email protected] /Users/username/.nvm/versions/node/v15.0.1/lib/node_modules/npm

❯ npm update -g
npm ERR! global requires an add or rm option

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/username/.npm/_logs/2020-10-22T20_49_47_598Z-debug.log

对我来说也是一样。 MacOS,npm v7.0.3。 使用nvm。

相同。 在MacOS上,使用Brew。

brew rm nodebrew install node来解决npm ls -g不显示任何程序包的问题。

之后,我npm i npm@^6 -g然后运行npm update -g (实际上,我也首先做了npm update eslinst<strong i="12">@lastest</strong> -g

然后,我运行了npm i npm<strong i="15">@latest</strong> -g ,现在npm update -g没有报告错误。 (现在没有可用的更新,但是对于我来说,现在似乎是固定的。)

我做了与@WraithKenny相同的npm i npm -g而不指定@^6 ,它将默认安装__ver 6.14.8__,但是当您npm list -g ,它什么也没显示。 然后,我重新安装了npm,但是版本7 >> npm i npm<strong i="9">@7</strong> -g现在没有错误,当我npm list -g它显示了所有全局安装的软件包,并且不再有错误。

由于npm 7不是最新版本,因此您不希望在使用npm 7时使用npm install -g npm ,因为它将降级到6。请使用@7来确保您停留在v7上。

今天,在将节点更新到版本15.0.1并同时将npm更新到版本7.0.5之后,我在Win 10上遇到了此问题。 快速查看调试日志堆栈跟踪中的文件,指向文件npm \ node_modules \ npm \ node_modules @ npmcli \ arborist \ lib \ arboristbuild-ideal-tree.js中的以下行(184-5):

    if (!options.add && !options.rm && this[_global])
      return Promise.reject(new Error('global requires an add or rm option'))

这是我第一次深入研究底层代码,从这些方面的上下文中我还不清楚,它们的预期目的是什么,但是它们显然使除add或rm之外的任何全局更新操作都很难停止。

brew install nodejs
npm update --global --quiet
npm ERR! global requires an add or rm option

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/xxxxxxxx/.npm/_logs/2020-10-24T04_20_28_320Z-debug.log

@WraithKenny @alaadahmed你们俩现在都可能有两个全局node_modules目录,对吗?

1) /usr/local/lib/node_modules (使用npm 6.14.8和以前的所有全局模块)

2) /usr/local/Cellar/node/15.0.1/lib/node_modules (使用npm 7.0.5和零个全局模块(尚未))

并调用npm将使用6.14.8,但在/usr/local/Cellar/node/15.0.1/lib/node_modules显示模块,对吗?

@ErikAbele是的,我后来发现了。

@ErikAbele是的,我后来发现了。

是的,在OSX上看到的也一样:-(我在Ubuntu 20.04机器上将它们全部排序,但是一旦我尝试在OSX上将npm更新到7.0.5,它就会将我的全局node_modules目录切换到/usr/local/Cellar/node/15.0.1/...

Ubuntu 20.04:

erik<strong i="11">@RaspberryPi</strong>:~$ which npm 
/usr/bin/npm
erik<strong i="12">@RaspberryPi</strong>:~$ npm --version
7.0.5
erik<strong i="13">@RaspberryPi</strong>:~$ npm list -g
/usr/lib
├── @codefaktor/[email protected] -> /home/erik/repos/codefaktor/qubot
├── [email protected]
├── [email protected]
└── [email protected]

MacOS X:

[erik<strong i="17">@Odin</strong> ~]% which npm                                                                                                                                                                                                           14:26:48
/usr/local/bin/npm
[erik<strong i="18">@Odin</strong> ~]% npm --version                                                                                                                                                                                                       14:32:30
7.0.3
[erik<strong i="19">@Odin</strong> ~]% npm list -g                                                                                                                                                                                                         14:32:36
/usr/local/lib
├── @codefaktor/[email protected] -> /Users/erik/Workzone/Projects/codefaktor.de/qubot
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]

一旦我对后者执行了npm install npm<strong i="22">@7</strong> -g ,我就又把它搞砸了:-/所以,如果有人知道如何解决那一件事,我将感谢您PIA,TIA! ;-)

好的,我做了以下工作,它解决了新建全局包路径的问题:

1- npm config set prefix '/usr/local' >>这将设置路径对全球已安装的软件包,它会搜索文件夹lib这个路径内,然后将安装在任何包node_modules文件夹内lib ..因此,对于macOS,它将在/usr/local/lib/node_modules >>中找到所有已安装的软件包,但这将与[email protected]而不是7.0.3因此您需要检查哪个您拥有的npm版本。
在我将节点升级到15.0.1它安装了[email protected]因此我按照步骤__1​​__所示配置了前缀路径,然后才用npm i npm -g将npm更新为7.0.5。
现在,当我npm list -g它将显示以前安装的所有软件包。 npm update -g可以正常工作。

我认为对于ubuntu,您需要制作npm config set prefix '/usr'以便它将在该路径中搜索lib文件夹,并将在node_modules下的lib node_modules内安装任何软件包,因此完整路径为/usr/lib/node_modules

__update__:它仍然不适用于npm @ 7 ..但适用于npm @ 6node 15.0.1 ,并且软件包的路径固定为/usr/local/lib/node_modules
我在node 15.0.1以下仍然遭受npm@7 node 15.0.1

太好了,这终于成功了-谢谢!

(很奇怪, npm config get prefix已经有了该路径,但是将其设置为其他时间确实阻止了第二个目录结构的创建。)

@ErikAbele现在确定您拥有哪个版本的npm ?! 如果npm@7可以赚npm update -g ?!

我安装了[email protected] (随新安装的[email protected]一起提供),然后我添加了前缀,并通过npm install npm<strong i="7">@7</strong> -g将其更新为[email protected] ,现在我有7.0.5 / usr / local / lib / ...

npm update -g仍然不起作用,但是npm outdated -g适用于正确的路径,我可以简单地执行例如npm install eslint<strong i="12">@latest</strong> -g来在正确的路径上使用最新的npm更新特定的软件包。 这就是我现在需要的(直到将npm修复为上游)...

我猜只要7.0.5没有被标记为最新的(而6.14.8是最新的),我们将不得不忍受...:-/

我回滚到[email protected]但使用node 15.0.1 ,当他们将npm@7标记为__latest__时,它将对其进行升级。

早上好我也有同样的问题。

如果我执行“ npm upadate -g”,则给我“全局要求添加或rm选项”;如果执行“ npm list -g”,则给我“ [email protected] ”。 如果我降级到npm 6,问题仍然存在。

我的真正问题是,我在全球范围内安装了许多软件包,我不记得全部。 有办法恢复它们吗?

我在macOS Mojave上。

您可以阅读以下内容,它将解决您的问题: https :

Nodejs 15.0.1
npm 7.0.3

使用“ npm set config”,指向我的用户个人资料文件夹。现在它指向正确的modules文件夹,但是现在,执行一个过时的请求(npm outdated -g)会列出更多过时的软件包。

image

列表继续列出更多软件包...

我正在讨论此线程into上的所有问题。 。 。 降级到v6.14.8直到解决了这些问题

npm 7.0.6已发布,并且同样的问题仍然存在。 ; o(

官方修复程序正在研究中吗? 现在,如果不重新安装全局软件包,便无法更新它们。

v7.0.7仍然会发生这种情况吗?

NPM v7.0.8已发布,并且该错误仍然存​​在。 请做点什么。

Mac可能的解决方法:
使用n进行安装,然后切换到新的node / npm版本。
https://github.com/tj/n
然后切换回
sudo npm -g update应该可以

Mac可能的解决方法:
使用n进行安装,然后切换到新的node / npm版本。
https://github.com/tj/n
然后切换回
sudo npm -g update应该可以

sudo npm --version的输出是什么?

@felipecrs将取决于使用n安装的版本。
我的:节点为v12.13.1时为npm 6.14.8

Mac可能的解决方法:
使用n进行安装,然后切换到新的node / npm版本。
https://github.com/tj/n
然后切换回
sudo npm -g update应该可以

sudo npm --version的输出是什么?

@felipecrs将取决于使用n安装的版本。
我的:节点为v12.13.1时为npm 6.14.8

尝试npm v7.0.8?

尝试npm v7.0.8?

问题仍然存在:-(

今天的自制软件升级又使该问题再次出现

只是为了解决这个问题,无论什么版本的节点(例如15),npm v7都是一个问题。

可以确认此问题仍然存在...我们是否听说过正在解决此问题? 上周刚买了一台新的工作电脑,还没有任何运气:(

@felipecrs等人:是的,是的,这只是npm @ 7的问题–我刚尝试使用最新的7.0.8,但该问题仍然存在。

我已完全删除%USERAPPDATA%中的Node和npm module文件夹。
重新安装了节点(15.0.1)。
将npm升级到7.07。

1)npm过时的-g
给出了许多过时的模块列表

2)npm列表-g --depth = 0
现在,它列出了模块(在仅显示npm之前)

3)npm更新npm -g
(将npm更新为7.0.8)
npm ERR! 全局需要添加或rm选项

结论:
重新安装一切都可以解决问题,但npm错误仍然存​​在。 我认为这也不可行。

看起来v7.0.9也无法解决该问题。

看起来v7.0.9也无法解决该问题。

该错误已得到确认,并计划在即将发布的版本中进行修复。

感谢您关注这个@isaacs!

好极了! 谢谢@isaacs提供的cc0c6e1

非常感谢您解决此问题。 您预计何时用此修复程序发布下一个更新?

此页面是否有帮助?
0 / 5 - 0 等级