Angular11升级至12时报cb.apply is not a function错误该如何解决
错误根因分析
- 版本兼容缺陷:报错日志显示执行命令时调用的npm版本为v5.1.0,该版本和你本地安装的Node.js v14存在明显兼容问题,旧版本
graceful-fs依赖的polyfill逻辑在高版本Node环境下会直接触发cb.apply is not a function异常 - 工具调用逻辑问题:你日常使用yarn作为包管理器,但执行
npx命令时默认调用了项目node_modules目录下自带的旧版本npx、npm依赖,你之前删除全局npm缓存的操作不会作用到项目本地的旧依赖上,因此无法解决问题
解决方案
- 优先使用yarn原生等价命令执行升级,完全避开调用旧版npm的问题,执行命令如下:
yarn dlx @angular/cli@12 update @angular/core@12 @angular/cli@12
说明:yarn dlx是yarn生态中对应npx的工具,会直接拉取指定版本的Angular CLI执行升级逻辑,不会触发项目本地旧npm依赖的兼容问题 - 若上述命令执行后仍有异常,按以下步骤操作:
- 删除项目根目录下的
node_modules文件夹和yarn.lock文件 - 执行
yarn install重新安装全量依赖 - 再次执行上述的yarn dlx升级命令
- 删除项目根目录下的
- 如果你需要兼容npm使用场景,可先将全局npm版本升级到v7及以上,执行
npm install -g npm@latest后再重试最初的npx升级命令即可
内容的提问来源于stack exchange,提问作者user17267337
相关产品推荐
相关产品推荐

