Angular12执行ng g m生成模块提示skipTests额外属性错误如何解决
报错原因
Angular v12 对不同类型schematic的入参校验做了严格限制:你创建项目时指定的--skip-tests=true会被写入angular.json的全局schematics默认配置,但是生成模块(module)的schematic本身不支持skipTests属性,全局配置自动将该参数带入生成命令后,就会触发参数校验失败。
解决方法
方法1:单次生成时临时禁用该参数
执行生成命令时手动添加--skip-tests=false覆盖全局配置即可,示例:ng g m home --skip-tests=false # 如果需要指定生成路径,可改为: ng g m pages/home --skip-tests=false该方案无需修改项目配置,适合偶尔生成模块的场景。
方法2:修改
angular.json全局配置(永久生效)
打开项目根目录的angular.json文件,找到schematics配置节点,不要将skipTests写在全局通用配置下,仅对支持该参数的 schematic 类型配置即可:{ // 其他配置省略 "schematics": { "@schematics/angular:component": { "skipTests": true }, "@schematics/angular:service": { "skipTests": true }, "@schematics/angular:directive": { "skipTests": true }, "@schematics/angular:pipe": { "skipTests": true } } }修改后生成组件、服务、指令、管道时仍会自动跳过测试文件,生成模块、路由、类等不支持
skipTests的类型时也不会触发报错,符合项目初始配置的预期。方法3:使用参数别名
也可以用Angular CLI提供的参数别名实现和方法1一致的效果:ng g m home --no-skip-tests
内容的提问来源于stack exchange,提问作者abhay tripathi
相关产品推荐
相关产品推荐

