Windows环境Angular14新建项目报npm ERR! cb() never called!错误
修复方案
npm ERR! cb() never called! 是npm 6.x版本在复杂依赖树解析、网络请求中断、权限不足场景下的典型报错,之前清缓存重装无效的核心原因是没解决版本兼容和CLI自动安装的流程问题,按以下步骤操作即可:
1. 升级npm到Angular 14兼容版本
Angular 14官方适配的npm版本为8.x,当前使用的npm 6.14.17存在依赖树解析的已知bug,会直接触发该回调错误:
- 以管理员身份打开终端,执行以下命令升级npm:
npm install -g npm@8.19.2 - 升级完成后执行
npm -v,确认版本号输出为8.19.2,若版本未变化,检查Node全局安装目录的写入权限。
2. 清理异常残留
之前创建失败的项目目录和损坏的缓存索引会持续触发报错:
- 彻底删除之前创建失败的
my-project文件夹,可直接手动删除,或在对应目录下执行命令删除:rmdir /s /q my-project - 执行缓存校验修复命令,替代之前的强制清理操作:
npm cache verify
该命令会自动扫描缓存目录的损坏文件、修复索引异常,比
npm cache clear --force的清理效果更彻底,不会残留无效缓存片段。
3. 跳过CLI自动安装,手动初始化依赖
Angular CLI执行ng new时默认自动触发依赖安装,这个流程对网络波动、权限限制的容错率极低,很容易触发回调异常:
- 执行带跳过安装参数的创建命令:
ng new my-project --skip-install - 命令执行完成后进入项目目录:
cd my-project - 执行依赖安装,加上兼容参数跳过peer依赖版本校验:
npm install --legacy-peer-deps
4. 兜底排查项
完成以上步骤后仍报错的话,逐一检查以下配置:
- 不要在
C:\Program Files等需要系统管理员权限的目录下创建项目,换到非系统盘的个人工作目录操作 - 执行
npm config get registry检查当前npm源,若使用的是内部私有源,先切回官方源测试:npm config set registry https://registry.npmjs.org/ - 临时关闭系统代理、VPN、第三方安全防护软件,这类工具会拦截npm的包下载请求,导致回调无法正常触发
安装完成后,在项目目录执行ng serve,能正常启动本地开发服务即代表修复成功。
内容的提问来源于stack exchange,提问作者Emmanuel BRUNET
相关产品推荐
相关产品推荐

