npm audit 报高危漏洞,但升级依赖后项目就报错怎么办?
我用 npm audit 扫描项目,发现 lodash 有个高危漏洞,提示要升级到 4.17.21 以上。可我升级完之后,页面直接白屏,控制台报错说某个方法 undefined。
之前用的是 4.17.20,代码里就这么用的:
import _ from 'lodash';
const data = { a: { b: null } };
const value = _.get(data, 'a.b.c', 'default');
console.log(value); // 期望输出 'default'
现在升级后这段代码就出问题了,是不是新版改了 API?还是我哪里没配对?
先用
npm ls lodash检查下是不是有其他依赖还在用旧版本,有时候多个版本混在一起就会出问题。如果是这种情况,可以这样处理:关于API变更的问题,从4.17.20到4.17.21
_.get的行为确实有调整。新版对null值处理更严格了,你代码里的data.a.b是null,所以新版会直接返回null而不是继续找'c'。安全提示:升级依赖时一定要先在测试环境验证,特别是像lodash这种基础库。我上次没测试直接上生产,半夜被报警叫醒修bug...
修复代码可以这样写:
或者直接用可选链操作符(如果你环境支持):
最后提醒下,别忘了在package.json里固定lodash版本,防止后面又被自动升级搞出问题: