Pular para o conteúdo
ecdsa.com
pnpm 12 (native binary, rustls)Gerenciadores de pacotes

Mensagem de erro

Error: ERR_PNPM_RESOLVING_NPM_RESOLVER_NETWORK_ERROR

Também aparece como

  • Error: ERR_PNPM_PACKAGE_MANAGER_ADD_RESOLVE_LATEST

O código principal depende do comando: ERR_PNPM_RESOLVING_NPM_RESOLVER_NETWORK_ERROR para pnpm install, ERR_PNPM_PACKAGE_MANAGER_ADD_RESOLVE_LATEST para pnpm add. A cadeia de causas logo abaixo diz “Failed to fetch metadata from <url>: error sending request: client error (Connect): invalid peer certificate: UnknownIssuer” e quebra a linha em 80 colunas. O pnpm 10 e anteriores rodam sobre o Node.js e, em vez disso, relatam códigos do Node.js como SELF_SIGNED_CERT_IN_CHAIN ou UNABLE_TO_GET_ISSUER_CERT_LOCALLY.

pnpm 12 (native binary, rustls) — registry request over HTTPS fails with "invalid peer certificate: UnknownIssuer"

O que significa

O pnpm 12 não conseguiu buscar os metadados dos pacotes no registro, e a cadeia de causas que ele imprime termina em “invalid peer certificate: UnknownIssuer”: uma falha de verificação de TLS. O pnpm 12 é um binário nativo cujo cliente HTTP verifica certificados com o rustls, e “UnknownIssuer” é o código único do rustls para qualquer falha na montagem da cadeia: CA privada desconhecida, raiz de proxy, intermediário ausente ou certificado autoassinado.

Por que acontece

Como corrigir

  1. 1.

    Definir cafile no .npmrc

    O pnpm lê arquivos de configuração no estilo do npm; cafile (ou um valor ca informado diretamente) adiciona a CA para as requisições ao registro.

    ini
    ; .npmrc (project or ~/.npmrc) — read by pnpm as well as npm
    cafile=/etc/ssl/private-ca/corp-root-ca.pem
  2. 2.

    Instalar a raiz no repositório do sistema operacional

    No nosso teste, o pnpm 12 aceitou uma raiz adicionada com update-ca-certificates; portanto, raízes distribuídas pela TI funcionam sem configuração adicional.

    bash
    # pnpm 12 also trusts the operating system's store
    sudo cp corp-root-ca.pem /usr/local/share/ca-certificates/corp-root-ca.crt
    sudo update-ca-certificates
  3. 3.

    Ou usar NODE_EXTRA_CA_CERTS

    O pnpm 12 também respeita essa variável, o que permite manter uma única configuração para Node.js, npm e pnpm.

    bash
    # Honoured by pnpm 12 too, so one variable covers node, npm and pnpm
    export NODE_EXTRA_CA_CERTS=/etc/ssl/private-ca/corp-root-ca.pem
    pnpm install

Erros relacionados

Ver toda a base de erros de assinatura