无法运行 Angular 站点,因为我的 angular.json 文件路径与 ng build 创建的不匹配

Posted

技术标签:

【中文标题】无法运行 Angular 站点,因为我的 angular.json 文件路径与 ng build 创建的不匹配【英文标题】:Can't run Angular site because my angular.json file paths mismatch with what ng build creates 【发布时间】:2019-10-17 23:07:23 【问题描述】:

Angular 新手,在运行 ng build 后,我看到它在我定义的文件夹中创建的所有文件。

在我正在构建的 Angular.json 文件中

“输出路径”:“../DatingApp.API/wwwroot”

但 Angular.json 文件的其余部分似乎与构建的文件不匹配。

意思是,在 wwwroot 中构建的所有文件似乎都没有我的 Angular.json 文件根据文件中的路径需要/预期的相同文件夹结构。

这是构建的,您可以看到它是一个包含所有文件的文件夹。我的 angular.json 文件正在寻找子文件夹中的文件,例如。 “src/...”

为什么会出现不匹配以及解决此问题的正确方法是什么?我应该修改 Angular.json 文件中的所有路径以指向正确的构建文件吗?或者是否有其他版本不匹配,或者可以通过更新 npm 包来纠正。

Angular.json 文件


  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": 
    "DataingApp-SPA": 
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "app",
      "schematics": ,
      "architect": 
        "build": 
          "builder": "@angular-devkit/build-angular:browser",
          "options": 
            "outputPath": "../DatingApp.API/wwwroot",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.app.json",
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.css"
            ],
            "scripts": [
              "node_modules/alertifyjs/build/alertify.min.js"
            ],
            "es5BrowserSupport": true

          ,
          "configurations": 
            "production": 
              "fileReplacements": [
                "replace": "src/environments/environment.ts",
                "with": "src/environments/environment.prod.ts"
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true,
              "budgets": [
                "type": "initial",
                "maximumWarning": "2mb",
                "maximumError": "5mb"
              ]
            
          
        ,
        "serve": 
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": 
            "browserTarget": "DataingApp-SPA:build"
          ,
          "configurations": 
            "production": 
              "browserTarget": "DataingApp-SPA:build:production"
            
          
        ,
        "extract-i18n": 
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": 
            "browserTarget": "DataingApp-SPA:build"
          
        ,
        "test": 
          "builder": "@angular-devkit/build-angular:karma",
          "options": 
            "main": "src/test.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.spec.json",
            "karmaConfig": "src/karma.conf.js",
            "styles": [
              "src/styles.css"
            ],
            "scripts": [],
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ]
          
        ,
        "lint": 
          "builder": "@angular-devkit/build-angular:tslint",
          "options": 
            "tsConfig": [
              "src/tsconfig.app.json",
              "src/tsconfig.spec.json"
            ],
            "exclude": [
              "**/node_modules/**"
            ]
          
        
      
    ,
    "DataingApp-SPA-e2e": 
      "root": "e2e/",
      "projectType": "application",
      "prefix": "",
      "architect": 
        "e2e": 
          "builder": "@angular-devkit/build-angular:protractor",
          "options": 
            "protractorConfig": "e2e/protractor.conf.js",
            "devServerTarget": "DataingApp-SPA:serve"
          ,
          "configurations": 
            "production": 
              "devServerTarget": "DataingApp-SPA:serve:production"
            
          
        ,
        "lint": 
          "builder": "@angular-devkit/build-angular:tslint",
          "options": 
            "tsConfig": "e2e/tsconfig.e2e.json",
            "exclude": [
              "**/node_modules/**"
            ]
          
        
      
    
  ,
  "defaultProject": "DataingApp-SPA"

【问题讨论】:

Angular.json 文件需要/期望基于文件中的路径是什么意思。?您的实际问题是什么? 我的意思是 "index": "src/index.html" -> src 文件夹不存在!该构建没有创建任何子文件夹。所以现在连接到 localhost 时出现错误说找不到(例如 favicon.ico、pollyfills.js 等) Chrome 控制台的第一个错误是 GET localhost:5000/runtime.js net::ERR_ABORTED 404 (Not Found) 【参考方案1】:

您的问题必须与您在网络服务器上托管文件的方式有关,因为构建没有失败。

您的应用程序的目录结构与最终构建无关,它会将所有内容存储在一个文件夹中*。

在编译期间,Webpack 会更改任何文件引用以支持这一点。

尝试使用ng build 构建您的应用程序,并使用http-server 之类的东西提供它(您可以使用npm install http-server -g 全局安装)。

然后你可以输入http-server DatingApp.API/wwwroot,它应该会在 localhost:8080 上启动一个网络服务器。

*可以在assets 下的angular.json 文件中定义任何例外,该文件列出了添加到最终构建文件夹中的文件夹和文件。默认情况下它看起来像

"assets": ["src/assets", "src/favicon.ico",],

【讨论】:

【参考方案2】:

这些路径在开发过程中引用文件。当您构建代码时,编译器会发挥很多作用。您在 dist 目录中的输出应该看起来像您在图片中显示的那样。

不要担心不匹配,这是应该的。不要尝试在本地打开文件,因为它需要网络服务器才能正常工作。如果您想在生产模式下运行您的应用程序,只需使用 ng serve --prod

【讨论】:

我想我只需要重新启动“dotnet watch run”命令,因为现在我可以在 localhost:5000 上看到该站点。我猜 krestal 服务器在哪里寻找构建副本而不是内存中的调试副本?

以上是关于无法运行 Angular 站点,因为我的 angular.json 文件路径与 ng build 创建的不匹配的主要内容,如果未能解决你的问题,请参考以下文章

Apollo Angular Add--无法读取 tsconfig.base.json

如何在我的 Windows 桌面上运行 localhost 的移动设备上运行我的 Angular 站点[重复]

Angular 为所有站点运行 jQuery 代码

在 angular.bootstrap 之后添加 Angular 模块

角度材料未满足对等依赖性

Angular PWA 错误站点无法安装:未检测到匹配的服务人员