【问题标题】:Loading chunk module failed: Upgrade to angular 7加载块模块失败:升级到 Angular 7
【发布时间】:2020-09-27 13:30:22
【问题描述】:

我的应用程序托管在 IIS 上。升级到 Angular 7 后,我收到错误“加载块模块失败”。 它似乎不是从 dist/ 文件夹中获取文件,而是试图从根文件夹中获取。 .js 文件正在 dist/ 文件夹中创建。

这是我的 index.html:

<!doctype HTML>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>ABClth</title>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
  <app-root></app-root>
</body>
</html>

这是我的 angular.json 文件:

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    "abc": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "app",
      "schematics": {},
      "targets": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist",
            "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/site.scss"
            ],
            "scripts": []
          },
          "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
            }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "abc:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "abc:build:production"
            }
          }
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "abc: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/**"
            ]
          }
        }
      }
    },
    "abc-e2e": {
      "root": "e2e/",
      "projectType": "application",
      "targets": {
        "e2e": {
          "builder": "@angular-devkit/build-angular:protractor",
          "options": {
            "protractorConfig": "e2e/protractor.conf.js",
            "devServerTarget": "abc:serve"
          },
          "configurations": {
            "production": {
              "devServerTarget": "abc:serve:production"
            }
          }
        },
        "lint": {
          "builder": "@angular-devkit/build-angular:tslint",
          "options": {
            "tsConfig": "e2e/tsconfig.e2e.json",
            "exclude": [
              "**/node_modules/**"
            ]
          }
        }
      }
    }
  },
  "defaultProject": "abc"
}

这是我的 ts.config 文件。

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "es2015",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "skipLibCheck": true,
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ],
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "allowSyntheticDefaultImports": true
  }
}

【问题讨论】:

    标签: angular iis angular7 upgrade


    【解决方案1】:

    尝试设置公共路径:

    publicPath: '/vuebundles/', 
    

    /vuebundles/ 将是您的应用程序文件夹名称。当您在 iis 中的站点下托管 Angular 应用程序时,您必须指定公共路径。

    另一种方法是您可以使用 iis URL 重写扩展并在 web.config 文件中添加以下规则:

    <configuration>
    
    <system.webServer>
    
      <rewrite>
    
        <rules>
    
          <rule name="Angular Routes" stopProcessing="true">
    
            <match url=".*" />
    
            <conditions logicalGrouping="MatchAll">
    
              <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    
              <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    
            </conditions>
    
            <action type="Rewrite" url="/MyApp/" />
        
          </rule>
    
        </rules>
    
      </rewrite>
    
    </system.webServer>
    
    </configuration>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-27
      • 2017-04-23
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2013-03-25
      相关资源
      最近更新 更多