Cli: [BUG] 类型错误:无法读取未定义的属性“匹配”

创建于 2020-03-04  ·  3评论  ·  资料来源: npm/cli

什么为什么

角 9.0.2
NodeJS:13.9.0
npm:6.13.7

什么时候

  • 每当我使用现有的 package-lock.json 安装 npm 包时
  • 输入git push heroku master

在哪里

  • https://github.com/theADAMJR/kittenoverflow -> 错误来源

如何

  • https://pastebin.com/rB36VJGu -> 错误日志

当前行为

  • 在 Heroku 上部署失败(大部分时间)

重现步骤

  • 使用 package-lock.json 安装任何 npm 包(使用这个项目)

预期行为

  • 类型错误:无法读取未定义的属性“匹配”

WHO

参考

  • 不适用

最有用的评论

找到罪魁祸首了不知何故,锁文件保存了格式错误的依赖项。 看起来像:

"rc": {}

删除后, npm install再次工作。

我相信它是在此之前运行的npm audit fix ,但会尝试更好地跟踪哪个确切步骤产生了这个。

所有3条评论

以下是此错误的一些日志,可能会有所帮助:

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 ]

从该堆栈看来,问题在于sw.versionundefined此处:

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

找到罪魁祸首了不知何故,锁文件保存了格式错误的依赖项。 看起来像:

"rc": {}

删除后, npm install再次工作。

我相信它是在此之前运行的npm audit fix ,但会尝试更好地跟踪哪个确切步骤产生了这个。

此页面是否有帮助?
0 / 5 - 0 等级