Lista de navegadores angulares: caniuse-lite está desatualizado. Por favor, execute o próximo comando `npm update`

11

Recentemente, comecei a receber esse erro em um projeto do Angular 8 (nó v10.16.0) em que estou trabalhando. A execução da lista de navegadores caniuse-lite de atualização do npm não fez nada

Portanto, removi o package-lock.json, removi o node_modules e executei a instalação do npm, mas o arquivo da lista de navegadores desapareceu. Novamente, quando executo o build, recebo a mesma mensagem: Lista de navegadores: caniuse-lite está desatualizada. Por favor, execute o próximo comandonpm update

Eu vejo este post no mesmo tópico: Lista de navegadores: caniuse-lite está desatualizado. Por favor, execute o próximo comando `npm update caniuse-lite browserslist` No entanto, ele fala sobre WebCompiler e autoprefixer, e eu não tenho idéia disso. Guie por favor

SilverFish
fonte
P: Você criou este projeto Angular com o Visual Studio? P: O que aconteceu quando você simplesmente seguiu as instruções e correu npm update caniuse-lite browserslist?
FoggyDay
11
Sim, o projeto angular está usando o Visual Studio 2017. Nada aconteceu quando eu uso a lista de navegadores canpmuse-lite do npm update. Nada instala ...
SilverFish
Como o arquivo da lista do navegador desapareceu após a instalação do npm (caniuse-lite existe), você recomenda que eu execute o npm na lista do navegador?
SilverFish
Eu só tenho o mesmo problema. no phpstrom ele me diz para rodar, npm updatemas isso não resolveu o problema, apenas fiz minha versão datilografada alta para angular 8.
BlakkM9 05/01
11
Estou tendo esse mesmo problema também, o Angular 8 usando o código do Visual Studio, embora não tenha certeza do motivo pelo qual o editor estaria causando esse conflito. Alguma resposta sobre isso ainda? Deveríamos lançar um enorme novo recurso esta semana e, é claro, agora nosso aplicativo não será construído. Eu vejo vários de nossos node_modules usando a lista do navegador
HomeBrew

Respostas:

8

Problema desatualizado do caniuse-lite resolvido executando os comandos abaixo.

npm cache clean  # optional
npm install caniuse-lite@latest --save
Dipten
fonte
npm cache cleannão funciona diretamente, pois é tratado automaticamente pelo npm nas versões mais recentes. Você quer que usemos --force? Se sim, por favor, explique por que devemos colocar o cache no cache.
Vishnudev
11
npm cache clean não é necessário. você pode executar diretamentenpm install caniuse-lite@latest --save
Dipten
11
Adicionar caniuse-lite ao seu aplicativo (via package.json bloat) não é uma boa ideia, pois não é uma dependência do seu aplicativo - apenas seu conjunto de ferramentas npm. Veja mais explicações abaixo. Também '--save' é redundante, pois agora é a ação padrão com a instalação.
jdh 8/01
Isso instala o caniuse-lite com êxito para mim, mas ainda assim recebo o mesmo erro.
nullmn
Eu tentei com o nó 10.xe ele foi corrigido. por favor, verifique a versão do seu nó.
Dipten
2

TLDR: (pode parecer contra-intuitivo sem a explicação)

  npm install caniuse-lite browserslist
  npm uninstall caniuse-lite browserslist

Explicação:

Esta mensagem de aviso ("canisuse-lite está desatualizada, por favor ...") é gerada por scripts na lista de navegadores durante a compilação / inicialização, se encontrar que a versão instalada do caniuse-lite é anterior a 2 versões da versão atual. Se nada no seu projeto mudou e você de repente vê essa mensagem ao iniciar ou compilar o projeto, provavelmente significa que houve uma atualização de versão recente do caniuse-lite.

Infelizmente, a mensagem de texto exibida pela lista de navegadores só será útil se você instalou o caniuse-lite como uma dependência do seu projeto. Muito provavelmente, você não fez. Portanto, quando você executa o 'npm update caniuse-lite' ou 'npm update' caniuse-lite @ latest '(ou' npm install '), o npm não vê esse pacote listado nas dependências do package.json, por isso ignora o pedido.

Como esses pacotes se tornaram dependências então? Quando seu projeto foi criado (talvez com app angularapp ou create-react-app ou similar para sua estrutura), o npm instalou a lista de navegadores como uma dependência das ferramentas necessárias, não como uma das dependências do seu projeto. Ao mesmo tempo, o caniuse-lite foi instalado como uma dependência da lista de navegadores. Posteriormente, quando o projeto foi atualizado, foi criado um arquivo package-lock.json que bloqueia todas as dependências para uma versão específica.

Se você pudesse atualizar as informações da versão na lista de dependências no package-lock.json, executar 'npm install' atualizaria esses pacotes no node_modules. Você não deve editar o pacote-lock.json manualmente. Em vez disso, a melhor maneira de fazer isso é:

  1. Transforme temporariamente esses pacotes em uma dependência do seu projeto:

    npm install caniuse-lite lista de navegadores

    Além de atualizar o pacote para a versão mais recente, isso atualiza a lista de dependências no package.json e (o mais importante) package-lock.json.

  2. Remova esses pacotes como dependências diretas do seu projeto:

    npm uninstall caniuse-lite lista de navegadores

    Como esses pacotes são usados ​​por outras dependências, eles não são removidos do node_modules. Somente o package.json é atualizado para removê-los como uma dependência do projeto.

  3. Confirme package-lock.json. Agora, qualquer outra pessoa pode simplesmente executar 'npm install' para obter os dois pacotes atualizados da lista de subdependências em package-lock.json e parar o aviso de mensagem.

jdh
fonte
Eu tentei sua solução, mas ainda tenho um aviso com esta mensagem (a lista de navegadores: caniuse-lite está desatualizada. Execute o próximo comando npm update) e com uma configuração angular limpa.
Alexander Kushnir
@AlexanderKushir - depois de fazer a instalação na etapa 1, procure node_modules para browserslist e caniuse-lite para verificar se a versão em seu pacote individual.json foi atualizada (deve ser 1.0.30001019 para caniuselite e 4.8.3 para browserslist, como de hoje). A nova versão da lista de navegadores (4.8.3) só deve reclamar se o canisuelite não foi atualizado. É possível que você tenha um servidor de cache definido em .npmrc que não esteja atualizando esses dois pacotes? (Se estiver, tente renomear temporariamente .npmrc antes de fazer a instalação?)
jdh
Eu só tinha que fazer tudo isso caniuse-litee a mensagem se foi
MoonStom
@ MoonStom - se você instalar apenas o caniuse-lite, estará adicionando isso como uma dependência do seu aplicativo, o que não é exato. O problema está no npm e na lista de navegadores. Depois de corrigidos, seu aplicativo não deve depender do caniuse-lite.
jdh 8/01