Cli: [BUG] TypeError: Não é possível ler a propriedade 'match' de indefinido

Criado em 4 mar. 2020  ·  3Comentários  ·  Fonte: npm/cli

O que? Por que

Angular 9.0.2
NodeJS: 13.9.0
npm: 6,13,7

Quando

  • Sempre que instalo um pacote npm com um pacote existente-lock.json
  • Depois de digitar git push heroku master

Onde

  • https://github.com/theADAMJR/kittenoverflow -> fonte do bug

Quão

  • https://pastebin.com/rB36VJGu -> log de erro

Comportamento Atual

  • Falha ao implantar no Heroku (na maioria das vezes)

Passos para reproduzir

  • Instale qualquer pacote npm com package-lock.json (usando este projeto)

Comportamento esperado

  • TypeError: Não é possível ler a propriedade 'match' de indefinido

Quem

  • Mim

Referências

  • n / D

Comentários muito úteis

Encontrou o culpado. De alguma forma, o arquivo de bloqueio teve uma dependência malformada salva. Parecia com:

"rc": {}

Depois de remover isso, npm install funcionou novamente.

Eu acredito que foi um npm audit fix executado um pouco antes disso, mas tentarei manter um registro melhor de qual etapa exata o produziu.

Todos 3 comentários

Aqui estão alguns registros desse erro que podem ajudar:

19 verbose stack TypeError: Cannot read property 'match' of undefined
19 verbose stack     at tarballToVersion (/home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/lib/install/inflate-shrinkwrap.js:87:20)
19 verbose stack     at inflatableChild (/home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/lib/install/inflate-shrinkwrap.js:99:22)
19 verbose stack     at /home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/lib/install/inflate-shrinkwrap.js:55:12
19 verbose stack     at tryCatcher (/home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/bluebird/js/release/util.js:16:23)
19 verbose stack     at Object.gotValue (/home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/bluebird/js/release/reduce.js:155:18)
19 verbose stack     at Object.gotAccum (/home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/bluebird/js/release/reduce.js:144:25)
19 verbose stack     at Object.tryCatcher (/home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/bluebird/js/release/util.js:16:23)
19 verbose stack     at Promise._settlePromiseFromHandler (/home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:517:31)
19 verbose stack     at Promise._settlePromise (/home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:574:18)
19 verbose stack     at Promise._settlePromise0 (/home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:619:10)
19 verbose stack     at Promise._settlePromises (/home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:699:18)
19 verbose stack     at _drainQueueStep (/home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/bluebird/js/release/async.js:138:12)
19 verbose stack     at _drainQueue (/home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/bluebird/js/release/async.js:131:9)
19 verbose stack     at Async._drainQueues (/home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/bluebird/js/release/async.js:147:5)
19 verbose stack     at Immediate.Async.drainQueues [as _onImmediate] (/home/jpage/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/bluebird/js/release/async.js:17:14)
19 verbose stack     at processImmediate (internal/timers.js:456:21)
20 verbose cwd /home/jpage/Code/vnext-api
21 verbose Linux 4.4.0-18362-Microsoft
22 verbose argv "/home/jpage/.nvm/versions/node/v12.16.1/bin/node" "/home/jpage/.nvm/versions/node/v12.16.1/bin/npm" "audit" "fix"
23 verbose node v12.16.1
24 verbose npm  v6.14.2
25 error Cannot read property 'match' of undefined
26 verbose exit [ 1, true ]

Dessa pilha, parece que o problema é que sw.version é undefined aqui:

https://github.com/npm/cli/blob/latest/lib/install/inflate-shrinkwrap.js#L99

Encontrou o culpado. De alguma forma, o arquivo de bloqueio teve uma dependência malformada salva. Parecia com:

"rc": {}

Depois de remover isso, npm install funcionou novamente.

Eu acredito que foi um npm audit fix executado um pouco antes disso, mas tentarei manter um registro melhor de qual etapa exata o produziu.

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