npm AVISO notsup PULAR DEPENDÊNCIA OPCIONAL: Plataforma não suportada para [email protected]

113

Estou tentando executar este projeto https://github.com/Soundnode/soundnode-app depois de atualizar minha versão do minimatch para 3.10.9, estou recebendo este erro

npm WARN opcional SKIPPING DEPENDÊNCIA OPCIONAL: fsevents@^1.0.0 (node_modules \ webpack \ node_modules \ watchpack \ node_modules \ chokidar \ node_modules \ fsevents): npm WARN notsup SKIPPING DEPENDÊNCIA OPCIONAL: plataforma não suportada para [email protected]: os ":" darwin "," arch ":" any "} (atual: {" os ":" win32 "," arch ":" ia32 "})

minha configuração é Nó v - 4.4.2 npm v- 3.10.9 estou trabalhando no sistema operacional Windows de 32 bits

Aishwary Tiwari
fonte
1
Não me parece um erro - apesar disso, você está tendo problemas para executar o código? npm WARNé apenas isso - um aviso ao qual vale a pena prestar atenção, mas que na verdade não quebrou nada.
Aurora0001,
2
E este aviso em particular está apenas informando que uma dependência opcional não foi instalada porque sua plataforma não atendia aos requisitos. Neste caso, ele está procurando por darwin e você está no win32
Dave V
é um projeto difícil, depois de executar este comando "npm install -g grunt-cli", tento executar o npm install quando recebo este aviso,
Aishwary Tiwari
1
@AishwaryTiwari, você realmente obteve um erro ou o código não funciona? É improvável que os avisos sejam um problema real, porque (como diz a mensagem de erro), ele ignorou uma dependência opcional.
Aurora0001 de
1
Há uma solicitação de pull que corrige o problema: github.com/npm/npm/pull/19198 Você pode se inscrever nessa solicitação de pull para obter uma atualização quando ela for fechada.
RiZKiT

Respostas:

150

É um aviso, não um erro. Isso ocorre porque fseventsé uma dependência opcional, usada apenas quando o projeto é executado no ambiente macOS (o pacote fornece 'Acesso nativo a Mac OS-X FSEvents').

E como você está executando seu projeto no Windows, fseventsé ignorado como irrelevante.

Há um PR para corrigir esse comportamento aqui: https://github.com/npm/cli/pull/169

piotr.d
fonte
35
O que é opcional e dependente não se contradiz?
Martijn Burger
7
Isso é mais uma questão teórica. Talvez conditional dependencyseja melhor? Nomear é difícil. Acho que não foi fácil encontrar um bom nome para este caso, mantendo-o conciso.
piotr.d
10
npm install --no-optional
suiwenfeng
5
Eu concordo totalmente, @DemPilafian. Portanto, editei minha resposta original e removi "apenas". Eu pessoalmente trato os avisos como erros, mas neste caso, IMHO, isso não deve ser registrado como um aviso, mas sim como informação, já que no ambiente do Windows você não pode fazer nada para fazer o aviso desaparecer.
piotr.d
23
Boa resposta, agora como faço para me livrar disso?
TetraDev
32

Isso ainda parece ser um problema, fazendo com que as instalações de pacotes sejam abortadas com avisos sobre os pacotes opcionais que não estão sendo instalados devido à "plataforma não suportada".

O problema está relacionado ao "encolhimento" ou package-lock.jsonque persiste após cada execução do gerenciador de pacotes. As tentativas subsequentes continuam falhando, pois este arquivo é referenciado em vez depackage.json .

Adicionar essas opções ao npm installcomando deve permitir que os pacotes sejam instalados novamente.

   --no-optional argument will prevent optional dependencies from being installed.

   --no-shrinkwrap argument, which will ignore an available package lock or
                   shrinkwrap file and use the package.json instead.

   --no-package-lock argument will prevent npm from creating a package-lock.json file.

O comando completo tem a seguinte aparência:

    npm install --no-optional --no-shrinkwrap --no-package-lock

nJoy!

nickl-
fonte
1
É arriscado definir o --no-optional-flag para código que funciona apenas para se livrar do aviso? Por que não é definido por padrão?
cederlof de
5
Isso não pode ser uma solução, pois usar o package-lock.json é uma coisa boa e essa solução sugere o oposto.
ismailarilik
@ismailarilik Esta solução me permite instalar pacotes para que eu possa continuar com meu trabalho.
nickl-
"--não-opcional" é uma ideia muito, muito ruim. Geralmente, não há problema em ignorar o aviso. Você também pode usar npm install -f: github.com/angular/angular/issues/13935
FoggyDay
12

Usando o parâmetro --force:

npm i -f
JFs
fonte
2
Eu forcei a instalação uma vez com este comando e agora quando eu lanço npm installnão tenho nenhum aviso, obrigado!
Allenile
1
Recebi alguns erros ao executar esse comando, mas depois de executar novamente o npm install, os avisos desapareceram! obrigado senhor
ccoutinho
Então você está instalando em seu projeto essas dependências inúteis (em uma máquina Windows) para obter os avisos? Em caso afirmativo, espero que sacudi-los ao se livrar deles na produção. Eu gosto da solução alternativa. Ele elimina todas as coisas relacionadas à maçã na minha tela.
Josep Alacid