javascript - 从 Angular 5 升级到 Angular 8,SystemJS 出现问题

标签 javascript asp.net-mvc angular systemjs zone.js

我有一个用 ASP.Net MVC 制作的应用程序,里面有 Angular 5 来显示 View 。我将 Angular 从 5 更新到了 8,现在我遇到了很大的麻烦,因为这个错误:

error image

似乎是关于 SystemJS 或 Zone.js

我还在开发工具中观察过某些文件是否未正确加载,但一切似乎都正常。

我不知道这里的问题是什么,所以我自己无法解决它,提前感谢您提供的帮助。

我的package.json:

{
  "name": "App",
  "version": "1.0.0",
  "private": true,
  "description": "App package.json",
  "scripts": {
    "ng": "ng",
    "build": "ng build --prod",
    "start": "ng serve",
    "test": "ng test",
    "i18n": "ng-xi18n",
    "lint": "tslint ./src/**/*.ts -t verbose"
  },
  "keywords": [],
  "author": "",
  "license": "MIT",
  "dependencies": {
    "@angular/common": "^8.2.0",
    "@angular/compiler": "^8.2.0",
    "@angular/core": "^8.2.0",
    "@angular/forms": "^8.2.0",
    "@angular/platform-browser": "^8.2.0",
    "@angular/platform-browser-dynamic": "^8.2.0",
    "@angular/platform-server": "^8.2.0",
    "@angular/router": "^8.2.0",
    "@angular/upgrade": "^8.2.0",
    "@ng-bootstrap/ng-bootstrap": "^5.1.0",
    "core-js": "^3.1.4",
    "dexie": "~2.0.4",
    "file-saver": "^2.0.2",
    "minimatch": "~3.0.4",
    "ngx-toastr": "^10.0.4",
    "performance-now": "^2.1.0",
    "rxjs": "^6.5.2",
    "rxjs-compat": "^6.5.2",
    "systemjs": "^0.21.5",
    "text-encoding": "^0.7.0",
    "zone.js": "^0.9.1"
  },
  "devDependencies": {
    "@angular/animations": "^8.2.0",
    "@angular/cli": "^8.2.0",
    "@angular/compiler-cli": "^8.2.0",
    "@types/file-saver": "^2.0.1",
    "@types/google.analytics": "^0.0.40",
    "@types/jasmine": "^3.3.16",
    "@types/jasminewd2": "^2.0.6",
    "@types/node": "^12.6.9",
    "jasmine-core": "^3.4.0",
    "jasmine-spec-reporter": "^4.2.1",
    "karma": "^4.2.0",
    "karma-chrome-launcher": "^3.0.0",
    "karma-cli": "^2.0.0",
    "karma-coverage-istanbul-reporter": "^2.1.0",
    "karma-jasmine": "^2.0.1",
    "karma-jasmine-html-reporter": "^1.4.2",
    "karma-phantomjs-launcher": "^1.0.4",
    "lodash": "^4.17.15",
    "phantomjs-prebuilt": "^2.1.16",
    "protractor": "^5.4.2",
    "ts-node": "^8.3.0",
    "tslint": "^5.18.0",
    "typescript": "^3.5.3"
  },
  "repository": {},
  "main": "karma-test-shim.js"
}

我的systemjs.config.js:

/**
 * System configuration for Angular.
 */
(function (global) {
    System.config({
        paths: {
            // paths serve as alias
            'npm:': 'Js/angular/node_modules/'
        },
        // map tells the System loader where to look for things
        map: {
            // our app is within the app folder
            app: 'Js/angular/src/app',

            src: 'Js/angular/src',

            // angular bundles
            '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
            '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
            '@angular/common/http': 'npm:@angular/common/bundles/common-http.umd.js',
            '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
            '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
            '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
            '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
            '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',

            // other libraries                        
            '@ng-bootstrap/ng-bootstrap': 'npm:@ng-bootstrap/ng-bootstrap/bundles/ng-bootstrap.umd.js',
            'rxjs': 'npm:rxjs',
            'tslib': 'npm:tslib/tslib.js',
            'dexie': 'npm:dexie/dist/dexie.js',
            'file-saver': 'npm:file-saver/dist/FileSaver.min.js',
            'text-encoding': 'npm:text-encoding/lib/encoding.js'
        },
        // packages tells the System loader how to load when no filename and/or no extension
        packages: {
            src: {
                main: 'Js/angular/src/main.js',
                defaultExtension: 'js'
            },
            rxjs: {
                main: 'index.js',
                defaultExtension: 'js'
            },
            'rxjs/operators': {
                main: 'index.js',
                defaultExtension: 'js'
            },
            'dexie': {
                format: 'amd'
            },
            'file-saver': {
                format: 'global'
            }
        }
    });
})(this);

有关 Angular bundle (App_Start/BundleConfig.cs):

bundles.Add(new ScriptBundle("~/bundles/angular").Include(
                        "~/Js/angular/node_modules/core-js/client/shim.min.js",
                        "~/Js/angular/node_modules/zone.js/dist/zone.js",
                        "~/Js/angular/node_modules/systemjs/dist/system.src.js",
                        "~/Js/angular/src/systemjs.config.js"));

最佳答案

请尝试添加应用程序的主条目。在处理此类问题时,这对我有用:

packages: {
  app: {
    main: 'main.js',
    defaultExtension: 'js',
  },
  rxjs: {
    defaultExtension: 'js'
  }
}

关于javascript - 从 Angular 5 升级到 Angular 8,SystemJS 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57367138/

相关文章:

JavaScript if 语句;当 true 时它应该播放声音

javascript - 正确加载顺序 jQuery、Bootstrap 和 select2 .js 文件

c# - 自定义类型 Convert.ToString

html - MVC2 Html 助手

c# - 始终创建一个新的 HttpContextWrapper 是否安全?

Angular 2 - 在路由更改时中止 HTTP 请求

Javascript/jQuery 未定义

angular - 如何配置 tslint 以检查 Angular2 中的 no-unused-variable

Angular2::NgFor:: promise

Javascript - touchstart 和 touchend 位置