更新Angular CLI后执行ng serve报Callback was already called错误求解决
解决Angular CLI升级后
ng serve出现"Callback was already called"错误 这个问题的核心原因是Angular CLI 6.x版本和你项目中的Angular 5.x版本不兼容——CLI 6是为Angular 6设计的,强行搭配低版本的Angular核心库会触发依赖冲突,进而导致neo-async的回调报错。
先确认你的环境版本冲突情况:
Angular CLI: 6.0.7 Node: 8.9.4 OS: win32 x64 Angular: 5.0.1 Package Version ----------------------------------------------------------- @angular-devkit/architect 0.6.7 @angular-devkit/build-angular 0.6.7 @angular-devkit/build-optimizer 0.6.7 @angular-devkit/core 0.6.7 @angular-devkit/schematics 0.6.7 @angular/cdk 5.2.4 @angular/cli 6.0.7 @angular/material 5.2.4 @angular/platform-server 5.1.1 @ngtools/webpack 6.0.7 @schematics/angular 0.6.7 @schematics/update 0.6.7 rxjs 5.5.2 typescript 2.4.2 webpack 4.4.1
下面给你两个可行的解决方案:
方案一:降级Angular CLI到适配Angular 5的版本
Angular 5对应的稳定CLI版本是1.7.x,你可以按以下步骤操作:
- 全局卸载当前CLI:
npm uninstall -g @angular/cli - 全局安装适配的1.7.x版本(推荐1.7.4,是Angular 5对应的最后一个稳定CLI版本):
npm install -g @angular/cli@1.7.4 - 进入项目目录,卸载本地项目的CLI依赖:
npm uninstall --save-dev @angular/cli - 安装本地适配版本的CLI:
npm install --save-dev @angular/cli@1.7.4 - 清理旧依赖并重新安装:
# Windows系统执行 del package-lock.json && rmdir /s /q node_modules # Mac/Linux系统执行 rm -rf node_modules package-lock.json npm install - 最后尝试启动项目:
ng serve
方案二:升级整个Angular项目到6.x版本
如果想保留CLI 6.x,建议把整个项目同步升级到Angular 6,步骤如下:
- 确保全局和本地CLI版本一致:
npm install -g @angular/cli@6.0.7 npm install --save-dev @angular/cli@6.0.7 - 升级Angular核心库:
ng update @angular/core - 同步升级Angular Material和CDK到6.x版本(5.x版本和Angular 6不兼容):
npm install @angular/material@6.4.7 @angular/cdk@6.4.7 - 清理旧依赖并重新安装:
rm -rf node_modules package-lock.json npm install - 启动项目验证:
ng serve
注意:升级项目时可能会遇到代码层面的兼容问题(比如Angular 6对RxJS的导入方式有调整,部分旧API被废弃),你可以根据CLI给出的提示逐步调整代码。
内容的提问来源于stack exchange,提问作者Aya Abdelaziz
相关产品推荐
相关产品推荐

