npm audit 报高危漏洞,但升级依赖后项目就报错怎么办?

诸葛彤彤 阅读 5

我用 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?还是我哪里没配对?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
百里冠英
啊这个问题我也遇到过,lodash的升级确实容易踩坑。先说解决方案:

先用npm ls lodash检查下是不是有其他依赖还在用旧版本,有时候多个版本混在一起就会出问题。如果是这种情况,可以这样处理:

npm install lodash@4.17.21 --force
npm dedupe


关于API变更的问题,从4.17.20到4.17.21_.get的行为确实有调整。新版对null值处理更严格了,你代码里的data.a.b是null,所以新版会直接返回null而不是继续找'c'。

安全提示:升级依赖时一定要先在测试环境验证,特别是像lodash这种基础库。我上次没测试直接上生产,半夜被报警叫醒修bug...

修复代码可以这样写:
const value = _.get(data, 'a.b') === null ? 'default' : _.get(data, 'a.b.c', 'default');


或者直接用可选链操作符(如果你环境支持):
const value = data?.a?.b ?? 'default';


最后提醒下,别忘了在package.json里固定lodash版本,防止后面又被自动升级搞出问题:
"dependencies": {
"lodash": "4.17.21"
}
点赞 1
2026-03-05 09:20