Angular CLI 8执行ng new/ng update报错:Workspace needs to be loaded before it is used
解决Angular CLI 8执行
ng new/ng update时的"Workspace needs to be loaded before it is used"错误 我之前处理过不少Angular CLI的版本兼容问题,这个报错在Angular 8里挺常见的,给你几个亲测有效的解决步骤:
1. 彻底清理并重装指定版本的Angular CLI
全局CLI安装损坏是最常见的原因,按以下步骤操作:
- 先卸载全局CLI:
npm uninstall -g @angular/cli - 强制清理npm缓存:
npm cache clean --force - 手动删除残留的CLI目录(根据你的报错路径,是
/usr/local/lib/node_modules/@angular/cli,Windows用户可以去C:\Users\[你的用户名]\AppData\Roaming\npm\node_modules找) - 安装Angular 8的稳定版本(推荐最后一个8.x版本,兼容性更好):
npm install -g @angular/cli@8.3.29
2. 确保执行命令的目录是干净的
执行ng new ng8时,一定要在空目录下操作!如果当前目录已经有angular.json、node_modules或者.angular-cli.json这类文件,CLI会误以为你要在现有工作区内创建项目,从而触发这个报错。
3. 匹配兼容的Node.js版本
Angular CLI 8对Node版本有严格要求,建议使用Node 10.9.0+的LTS版本(比如Node 12.x的最后一个LTS版本12.22.12),过高的Node版本(比如14+)会和Angular 8的依赖冲突。
如果需要切换Node版本,可以用nvm(Node版本管理器):
- 安装nvm后,执行
nvm install 12.22.12 - 切换到该版本:
nvm use 12.22.12
4. 检查本地项目配置(针对ng update报错)
如果是在现有项目里执行ng update报错,先确认项目根目录存在angular.json文件,且文件内容没有损坏。如果文件丢失或损坏,可以从备份恢复,或者重新初始化项目的配置文件。
报错堆栈信息
Error: Workspace needs to be loaded before it is used. at Workspace._assertLoaded (/usr/local/lib/node_modules/@angular/cli/node_modules/@angular-devkit/core/src/experimental/workspace/workspace.js:108:19) at Workspace._getTool (/usr/local/lib/node_modules/@angular/cli/node_modules/@angular-devkit/core/src/experimental/workspace/workspace.js:214:14) at Workspace.getCli (/usr/local/lib/node_modules/@angular/cli/node_modules/@angular-devkit/core/src/experimental/workspace/workspace.js:196:21) at NewCommand.getDefaultSchematicCollection (/usr/local/lib/node_modules/@angular/cli/models/schematic-command.js:266:36) at NewCommand.parseCollectionName (/usr/local/lib/node_modules/@angular/cli/commands/new-impl.js:41:43) at NewCommand.initialize (/usr/local/lib/node_modules/@angular/cli/commands/new-impl.js:22:40) at NewCommand.validateAndRun (/usr/local/lib/node_modules/@angular/cli/models/command.js:127:20) at async Object.runCommand (/usr/local/lib/node_modules/@angular/cli/models/command-runner.js:178:24) at async default_1 (/usr/local/lib/node_modules/@angular/cli/lib/cli/index.js:32:31)
内容的提问来源于stack exchange,提问作者Vinod Raut
相关产品推荐
相关产品推荐

