迁移ng-app-state库至Angular CLI v6时执行ng test带参数报错求助
解决Angular CLI v6中
ng test多目标+参数覆盖的错误 这个问题我之前在迁移monorepo项目到Angular CLI v6时也碰到过,本质是CLI的Architect系统对命令参数和目标项目的解析规则变了。
错误原因
你运行的命令ng test --source-map ng-app-state被CLI解析成了:同时对所有匹配的项目(这里是ng-app-state-monorepo和ng-app-state两个)执行test命令,并且应用--source-map参数覆盖。但Architect不允许这种在多个目标上直接指定参数覆盖的操作,因为它无法确认你是否要把这个参数应用到所有匹配的项目上,所以抛出了这个错误。
解决方案
方案1:明确指定单个项目并传递参数
把项目名放在参数前面,让CLI明确知道你要对哪个项目应用参数覆盖:
ng test ng-app-state --source-map
这样CLI会只针对ng-app-state项目运行测试,同时启用source map,不会触发多目标冲突。
方案2:批量运行多个项目(通过配置统一设置参数)
如果你需要对多个项目运行测试且都启用source map,建议修改根目录的angular.json配置:
- 找到
projects下的ng-app-state-monorepo和ng-app-state对应的test配置段 - 将
options里的sourceMap设置为true:"test": { "options": { "sourceMap": true, // 其他配置... } } - 然后运行批量测试命令:
ng test --projects ng-app-state-monorepo,ng-app-state
这样所有指定项目都会使用配置好的source map设置,不用在命令行传递参数,避免冲突。
方案3:仅对默认项目运行测试
如果你的工作区有默认项目,直接运行:
ng test --source-map
CLI会只针对默认项目执行测试,不会匹配多个目标。
内容的提问来源于stack exchange,提问作者Eric Simonton
相关产品推荐
相关产品推荐

