错误:架构验证失败,并出现以下错误:数据路径“”不应具有其他属性(项目)

V5N*_*NXT 23 migration typescript angular angular5 angular6

将应用程序从5号角迁移到6号角后,运行ng时会弹出以下错误。

模式验证失败,并出现以下错误:数据路径“”不应具有其他属性(项目)。错误:模式验证失败,并出现以下错误:数据路径“”不应具有其他属性(项目)。在MergeMapSubscriber._registry.compile.pipe.operators_1.concatMap.validatorResult [作为项目](... / TemplateApp / me-cmf-web-template-angular / node_modules / @ angular-devkit / core / src / workspace / workspace中。 js:210:42)在MergeMapSubscriber._tryNext(/.../me-cmf-web-template-angular/node_modules/@angular-devkit/core/node_modules/rxjs/internal/operators/mergeMap.js:65:27 )(位于MergeMapSubscriber.Subscriber._next(... / me-cmf-web-template-angular/node_modules/@angular-devkit/core/node_modules/rxjs/internal/operators/mergeMap.js:55:18)中。

我假设错误与.angular.json文件有关,该文件是从.angular-cli.json重命名的。

我的.angular.json文件如下:

{
    "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
    "project": {
        "name": "mediaweb"
    },
    "apps": [{
            "root": "src",
            "outDir": "dist/browser",
            "assets": [
                "assets",
                "favicon.ico"
            ],
            "index": "index.html",
            "main": "main.ts",
            "polyfills": "polyfills.ts",
            "test": "test.ts",
            "tsconfig": "tsconfig.app.json",
            "testTsconfig": "tsconfig.spec.json",
            "prefix": "app",
            "styles": [
                "styles.scss",
                "../node_modules/owl.carousel/dist/assets/owl.carousel.css",
                "../node_modules/owl.carousel/dist/assets/owl.theme.default.css",
                "../node_modules/video.js/dist/video-js.css"
            ],
            "scripts": [
                "../node_modules/jquery/dist/jquery.js",
                "../node_modules/owl.carousel/dist/owl.carousel.js",
                "../node_modules/video.js/dist/ie8/videojs-ie8.js",
                "../node_modules/video.js/dist/video.js"
            ],
            "environmentSource": "environments/environment.ts",
            "environments": {
                "dev": "environments/environment.dev.ts",
                "prod": "environments/environment.prod.ts"
            }
        },
        {
            "platform": "server",
            "root": "src",
            "outDir": "dist/server",
            "assets": [
                "assets",
                "favicon.ico"
            ],
            "index": "index.html",
            "main": "main.server.ts",
            "test": "test.ts",
            "tsconfig": "tsconfig.server.json",
            "testTsconfig": "tsconfig.spec.json",
            "prefix": "app",
            "styles": [
                "styles.scss"
            ],
            "scripts": [],
            "environmentSource": "environments/environment.ts",
            "environments": {
                "dev": "environments/environment.dev.ts",
                "prod": "environments/environment.prod.ts"
            }
        }
    ],
    "e2e": {
        "protractor": {
            "config": "./protractor.conf.js"
        }
    },
    "lint": [{
            "project": "src/tsconfig.app.json",
            "exclude": ["**/node_modules/**", "**/UI/**"]
        },
        {
            "project": "src/tsconfig.spec.json",
            "exclude": "**/node_modules/**"
        },
        {
            "project": "e2e/tsconfig.e2e.json",
            "exclude": "**/node_modules/**"
        }
    ],
    "test": {
        "karma": {
            "config": "./karma.conf.js"
        }
    },
    "defaults": {
        "styleExt": "scss",
        "component": {}
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该重新构造json文件吗?

任何帮助都会很棒。

pin*_*lla 24

我的应用程序的角度为 7.2.3

从 angular.json 中删除 "es5BrowserSupport": true。并且 npm start 现在可以工作了。

  • 你必须删除 `es5BrowserSupport`,不再允许在 `angular.json` 中使用这个键 (Angular ^v10) (4认同)

小智 22

只需转到 angular.json 文件并删除

“extractCSS”:正确

生产部分。


Sas*_*mar 19

该问题通常是由于package.json文件中的版本不匹配所致。

在Angular 7应用中,我已更改"@angular-devkit/build-angular": "^0.800.2""@angular-devkit/build-angular": "~0.7.0"

然后npm install删除后运行命令node_modules

放在一边:^小心使用。如果所使用的程序包发生重大变化,则您的工作代码将来可能无法正常工作。

  • 它也对我有用谢谢。知道为什么它不能与 0.800.2 版本一起使用吗? (2认同)
  • @Sasikumar 谢谢,删除 node_modules 并运行 `npm i` 为我解决了这个问题。我的问题是我有两个分支,其中一个有更新的角度版本。 (2认同)

Bri*_*Ray 13

当我遇到版本错误问题时,以下命令对我有用:

第一次运行:

npm update
Run Code Online (Sandbox Code Playgroud)

第二次运行:

ng update
Run Code Online (Sandbox Code Playgroud)

第三次运行:(它将更新所有不匹配的包)

ng update --all --force
Run Code Online (Sandbox Code Playgroud)


小智 11

First:

npm uninstall @angular-devkit/build-angular
Run Code Online (Sandbox Code Playgroud)

Next:

npm install @angular-devkit/build-angular@0.12.4
Run Code Online (Sandbox Code Playgroud)


Lon*_*ely 7

从 9 到 10 的 Angular 升级非常简单(所有其他详细信息都在这里:https : //update.angular.io/?v=9.0-10.0):

确保您的包文件处于版本控制中并且所有更改都已提交。这将覆盖您的包文件。最好在新的实验分支中尝试。

npm install -g npm-check-updates
ncu -u
ng update --all --force
Run Code Online (Sandbox Code Playgroud)

在新模式中,不再允许使用 key es5BrowserSupport,在您的 中删除以下行angular.json

"es5BrowserSupport": true
Run Code Online (Sandbox Code Playgroud)

然后简单地重新启动您的应用程序:

npm start
Run Code Online (Sandbox Code Playgroud)


小智 6

更改package.json自:

"@angular-devkit/build-angular": "^0.13.5",
Run Code Online (Sandbox Code Playgroud)

到:

"@angular-devkit/build-angular": "^0.12.1",
Run Code Online (Sandbox Code Playgroud)


V5N*_*NXT 5

因为我解决了这个问题,所以我认为把它贴在这里会很好。

我将文件名 .angular.json 更改为 angular.json 并替换了其中问题的一些属性。

{
  "$schema": "./node_modules/@angular-devkit/core/src/workspace/workspace-schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "template-appv6": {
      "root": "",
      "projectType": "application",
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/browser",
            "index": "src/index.html",
            "main": "src/main.ts",
            "tsConfig": "src/tsconfig.app.json",
            "polyfills": "src/polyfills.ts",
            "assets": [
              {
                "glob": "**/*",
                "input": "src/assets",
                "output": "/assets"
              },
              {
                "glob": "favicon.ico",
                "input": "src",
                "output": "/"
              }
            ],
            "styles": [
              "src/styles.scss"
            ],
            "scripts": []
          },
          "configurations": {
            "production": {
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true,
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ]
            }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "template-appv6:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "template-appv6:build:production"
            }
          }
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "template-appv6:build"
          }
        },
        "test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "main": "src/test.ts",
            "karmaConfig": "./karma.conf.js",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.spec.json",
            "scripts": [],
            "styles": [
              "src/styles.css"
            ],
            "assets": [
              {
                "glob": "**/*",
                "input": "src/assets",
                "output": "/assets"
              },
              {
                "glob": "favicon.ico",
                "input": "src",
                "output": "/"
              }
            ]
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "src/tsconfig.app.json",
              "src/tsconfig.spec.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        },
        "server": {
          "builder": "@angular-devkit/build-angular:server",
          "options": {
            "outputPath": "dist/server",
            "main": "src/main.server.ts",
            "tsConfig": "src/tsconfig.server.json"
          }
        }
      }
    },
    "template-appv6-e2e": {
      "root": "",
      "projectType": "application",
      "cli": {},
      "schematics": {},
      "architect": {
        "e2e": {
          "builder": "@angular-devkit/build-angular:protractor",
          "options": {
            "protractorConfig": "./protractor.conf.js",
            "devServerTarget": "template-appv6:serve"
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": [
              "e2e/tsconfig.e2e.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    }
  },
  "cli": {},
  "schematics": {
    "@schematics/angular:component": {
      "prefix": "app",
      "styleext": "css"
    },
    "@schematics/angular:directive": {
      "prefix": "app"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我通过用 angular 官方文档中的属性替换 angular.json 文件来更改文件。

官方Angular 更新指南提供了有关如何更新版本的分步指南。