Cli: [BUG] atualização do npm - global falha: ERR do npm! global requer uma opção add ou rm

Criado em 14 out. 2020  ·  44Comentários  ·  Fonte: npm/cli

Comportamento atual:

$ 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

Comportamento esperado:

Antes da v7.0.0, a execução de npm update --global atualizaria todos os pacotes instalados globalmente que estão desatualizados.

Passos para reproduzir:

Instale um pacote global desatualizado e tente atualizar todos os pacotes.

Meio Ambiente:

  • SO: Ubuntu 20.04.1
  • Nó: 12.19.0
  • npm: 7.0.0
Bug Release 7.x

Comentários muito úteis

Parece que a versão 7.0.9 também não vai resolver o problema.

O bug foi reconhecido e uma correção está agendada para um próximo lançamento.

Todos 44 comentários

Pode confirmar que isso acontece comigo também ...

➜  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 update --global falha: npm ERR! global requer uma opção add ou rm

Mesmo erro se eu quiser apenas atualizar pacotes globais:

npm -g update

Ou

npm -g upgrade

Vendo isso com v7.0.1 no Windows e Debian 10.

Funcionaram por 6.x

parece estar corrigido na v7.0.2

Ainda estou tendo o mesmo problema com 7.0.2

$ npm -v
7.0.2

atualização de $ npm -g
npm ERR! global requer uma opção add ou rm

Posso confirmar o mesmo comportamento no npm 7.0.3 no Windows 10 x64. Acabei de atualizar do npm @ 6 e tive essa surpresa.

O npm v 7.0.2 no macOS nodejs v15 tem o mesmo problema.

npm ERR! global requer uma opção add ou rm
npm ERR! Um registro completo desta execução pode ser encontrado em:
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

O mesmo problema para mim. MacOS, npm v7.0.3. Usando nvm.

Mesmo. No MacOS, com Brew.

I brew rm node e brew install node para corrigir o problema de npm ls -g não mostrar nenhum pacote.

Depois disso, eu npm i npm@^6 -g e executei npm update -g (na verdade, eu também fiz npm update eslinst<strong i="12">@lastest</strong> -g primeiro)

Em seguida, executei npm i npm<strong i="15">@latest</strong> -g e agora npm update -g não relata um erro. (Não há mais atualizações disponíveis, mas parece corrigido para mim, por enquanto.)

Fiz o mesmo que @WraithKenny , mas com a diferença de que eu npm i npm -g sem especificar @^6 e ele será instalado por padrão __ver 6.14.8__, mas então quando você npm list -g , não mostra nada. Em seguida, reinstalei o npm, mas ver 7 >> npm i npm<strong i="9">@7</strong> -g e agora não há erros e quando I npm list -g ele mostra todos os pacotes instalados globalmente, e sem mais erros.

Como o npm 7 não é "mais recente", você não deseja usar npm install -g npm quando estiver no npm 7, pois isso o reduzirá para 6. Use @7 para garantir que ficará na v7.

Eu encontrei esse problema hoje no Win 10 após atualizar o nó para a versão 15.0.1 e concomitantemente o npm para a versão 7.0.5. Uma rápida olhada nos arquivos no rastreamento da pilha do log de depuração aponta para as seguintes linhas (184-5) no arquivo npmnode_modulesnpmnode_modules @ npmcli \ arboristlib \ arboristbuild-ideal-tree.js:

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

Este é meu primeiro aprofundamento no código subjacente e não está claro para mim, a partir do contexto em torno dessas linhas, qual é o propósito pretendido, mas eles claramente impedem qualquer ação de atualização global diferente de add ou 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 Vocês dois provavelmente têm dois diretórios node_modules globais agora, certo?

1) /usr/local/lib/node_modules (com npm 6.14.8 e todos os seus módulos globais anteriores)

e

2) /usr/local/Cellar/node/15.0.1/lib/node_modules (com npm 7.0.5 e zero módulos globais (ainda))

E chamar npm usará 6.14.8, mas exibirá os módulos em /usr/local/Cellar/node/15.0.1/lib/node_modules , certo?

@ErikAbele Sim, descobri isso depois.

@ErikAbele Sim, descobri isso depois.

Sim, vendo o mesmo aqui no OSX :-( Eu resolvi tudo no meu Ubuntu 20.04, mas assim que tento atualizar o npm para 7.0.5 no OSX ele muda meu diretório global node_modules para /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]

Mac OS 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]

E assim que eu fizer npm install npm<strong i="22">@7</strong> -g neste último, eu bagunço tudo de novo: - / Então se alguém souber como consertar isso aí eu agradeceria um ping, TIA! ;-)

OK, eu fiz o seguinte e resolveu o problema do caminho recém-criado para pacotes globais:

1- npm config set prefix '/usr/local' >> isto irá definir o caminho para pacotes instalados globalmente e irá procurar a pasta lib dentro deste caminho e então irá instalar qualquer pacote na pasta node_modules dentro de lib .. então para macOS ele encontrará todos os seus pacotes instalados dentro de /usr/local/lib/node_modules >>, mas isso funcionará com [email protected] não 7.0.3 então você precisa verificar quais versão do npm que você tem.
Depois de fazer upgrade do nó para 15.0.1 ele instalou [email protected] então configurei o caminho do prefixo conforme mostrado na etapa __1__ e só então atualizei o npm para 7.0.5 com npm i npm -g
Agora quando eu npm list -g mostra todos os meus pacotes instalados antes. Além disso, npm update -g funciona bem.

Acho que para o ubuntu você precisa fazer npm config set prefix '/usr' para que ele procure a pasta lib nesse caminho e instale qualquer pacote dentro de node_modules em lib então o caminho completo será /usr/lib/node_modules

__update__: ainda não funciona com npm @ 7 .. mas funciona com npm @ 6 e node 15.0.1 com o caminho para pacotes fixado em /usr/local/lib/node_modules
Eu ainda sofro com npm@7 abaixo de node 15.0.1

Excelente, finalmente funcionou - obrigado!

(Estranho, npm config get prefix já tinha esse caminho, mas configurá-lo em outra hora realmente impediu a criação da segunda estrutura de diretório.)

@ErikAbele OK, agora qual versão do npm você tem ?! E se npm@7 você pode ganhar npm update -g ?!

Eu tinha [email protected] (que veio com a nova instalação de [email protected]), então adicionei o prefixo e atualizei para [email protected] via npm install npm<strong i="7">@7</strong> -g e agora tenho 7.0.5 em / usr / local / lib / ...

npm update -g ainda não funciona, mas npm outdated -g funciona para o caminho correto e posso simplesmente fazer, por exemplo, npm install eslint<strong i="12">@latest</strong> -g para atualizar pacotes específicos com o npm mais recente no caminho correto. Isso é tudo que eu preciso agora (e até que o npm seja corrigido no upstream) ...

Eu acho que enquanto 7.0.5 não estiver marcado como sendo o mais recente (e em vez disso 6.14.8 é), teremos que conviver com isso ...: - /

Eu reverto para [email protected] mas uso node 15.0.1 , e quando eles marcarem npm@7 como __latest__, o atualizarei.

Bom dia a todos. Eu tenho o mesmo problema.

Se eu fizer "npm upadate -g", será exibido "global requer uma opção add ou rm" e se eu fizer "npm list -g" será fornecido '

Meu verdadeiro problema é que tinha muitos pacotes instalados globalmente e não me lembro de todos. Existe uma maneira de recuperá-los?

Estou no macOS Mojave.

Você pode ler isto e resolverá seu problema: https://github.com/npm/cli/issues/1962#issuecomment -715911549

Nodejs 15.0.1
npm 7.0.3

Usando "npm set config", apontando para minha pasta de perfil de usuário. Agora aponta para a pasta de módulos correta, mas agora, executando uma solicitação desatualizada (npm desatualizado -g), ele lista pacotes bem mais desatualizados.

image

e a lista continua para muito mais pacotes ...

Estou encontrando todos os problemas neste tópico 😞. . . rebaixando para v6.14.8 até que esses problemas sejam resolvidos

O npm 7.0.6 foi lançado e o mesmo problema ainda persiste. ; o (

Uma correção oficial já está sendo trabalhada? No momento, não consigo atualizar meus pacotes globais sem reinstalá-los.

Isso ainda acontece na v7.0.7?

O NPM v7.0.8 foi lançado e o bug ainda existe. Por favor, faça algo sobre isso.

Possível solução, Mac:
Use n para instalar e, em seguida, mude para uma nova versão de nó / npm.
https://github.com/tj/n
Em seguida, volte e
sudo npm -g update deve funcionar

Possível solução, Mac:
Use n para instalar e, em seguida, mude para uma nova versão de nó / npm.
https://github.com/tj/n
Em seguida, volte e
sudo npm -g update deve funcionar

Qual é a saída de sudo npm --version ?

@felipecrs vai depender da versão instalada usando n.
Meu: npm 6.14.8 quando o nó é v12.13.1

Possível solução, Mac:
Use n para instalar e, em seguida, mude para uma nova versão de nó / npm.
https://github.com/tj/n
Em seguida, volte e
sudo npm -g update deve funcionar

Qual é a saída de sudo npm --version ?

@felipecrs vai depender da versão instalada usando n.
Meu: npm 6.14.8 quando o nó é v12.13.1

Experimente o npm v7.0.8?

Experimente o npm v7.0.8?

O problema persiste :-(

Este problema está de volta com a atualização homebrew de hoje

Só para resolver isso, é um problema com o npm v7, não importa a versão do nó (como 15).

Pode confirmar se o problema persiste ... Ouvimos falar de uma correção em andamento? Acabei de comprar um novo computador de trabalho na semana passada e não tive sorte :(

@felipecrs et al: sim, você está certo, é um problema apenas com npm @ 7 - acabei de tentar com o 7.0.8 mais recente e o problema persiste.

Eu removi completamente a pasta do módulo Node e npm em meu% USERAPPDATA%.
Nó reinstalado (15.0.1).
Npm atualizado para 7.07.

1) npm desatualizado -g
dá uma lista de muitos módulos que estão desatualizados

2) lista npm -g --depth = 0
Agora ele lista os módulos (antes ele só mostrava npm)

3) atualização npm npm -g
(para atualizar o npm para 7.0.8)
npm ERR! global requer uma opção add ou rm

Conclusão:
reinstalar tudo corrige algo, mas o erro de npm persiste. Acho que essa também não é uma forma viável.

Parece que a versão 7.0.9 também não vai resolver o problema.

Parece que a versão 7.0.9 também não vai resolver o problema.

O bug foi reconhecido e uma correção está agendada para um próximo lançamento.

Obrigado por investigar isso, @isaacs!

Yay! Obrigado @isaacs por cc0c6e1 .

Muito obrigado por corrigir isso. Quando você espera que a próxima atualização seja lançada com esta correção?

Esta página foi útil?
0 / 5 - 0 avaliações