ng serve --prod抛出“错误TypeError :(无效0)不是函数”)>

问题描述 投票:13回答:1

因此,当在Angular-CLI应用程序中遇到此问题时。

这里发生了什么:ng serveng serve --aot不产生异常,一切正常。浏览应用程序时仅运行ng serve --prod会中断。

ERROR TypeError: (void 0) is not a function

正在寻找答案,并找到了these dont's,因此我在应用程序中的每个属性之前都写了'public',并检查了提供程序中是否有函数调用,但没有任何变化。

接下来,我尝试使用--aot标志运行它,并且工作正常,但在--prod出现相同错误时仍然崩溃。

它在运行runnig登录过程时完全崩溃:

  • 发送带有登录名和密码数据的http POST
  • 如果请求解决,则分派ngRx-Store自定义登录事件(简单标志)
  • 然后将router.navigateByUrl转到另一页
  • 奇怪的是我到处都有类似的过程,但是它在确切的位置崩溃了。

[能否请其他人向我提供一些信息,但是我接下来应该在哪里挖掘?干杯!


更新:我在登录过程的每个部分都截断了代码,然后使用--prod进行了构建,结果发现@ angular / material中的MatDialog产生了错误。 MatDialog登录组件使用afterClosed()钩子解析到其父级后,触发了登录,并以某种方式产生异常。

所以父级,触发弹出窗口的是HeaderComponent,它包含方法:

    openLoginDialog(): void {
        this.authService.login();
         const dialogRef = this.dialog.open(LoginDialogComponent);
         dialogRef.afterClosed().subscribe(result => {
           if (result) {
             this.authService.login();
           }
        });
      }

并且在LoginDialogComponent内部是简单解析的方法:

    login(login, password) {
      this.authService.tryLogin(login, password).subscribe(data => {
        this.dialogRef.close(true);
      });
    }

我换句话说,删除了MatDialog,摆脱了项目上唯一的弹出窗口后,错误消失了。我用自己的“登录”表单制作了另一个组件,但仍认为由于构建错误而导致删除整个工作模块不是解决方案。

我的package.json:

    "dependencies": {
        "@angular/animations": "^5.0.2",
        "@angular/cdk": "^5.0.0-rc.1",
        "@angular/common": "^5.0.0",
        "@angular/compiler": "^5.0.0",
        "@angular/core": "^5.0.0",
        "@angular/flex-layout": "^2.0.0-beta.10-4905443",
        "@angular/forms": "^5.0.0",
        "@angular/http": "^5.0.0",
        "@angular/material": "^5.0.0-rc.1",
        "@angular/platform-browser": "^5.0.0",
        "@angular/platform-browser-dynamic": "^5.0.0",
        "@angular/platform-server": "^5.0.0",
        "@angular/router": "^5.0.0",
        "@ngrx/store": "^5.0.0",
        "@nguniversal/common": "^5.0.0-beta.5",
        "@nguniversal/express-engine": "^5.0.0-beta.5",
        "@nguniversal/module-map-ngfactory-loader": "^5.0.0-beta.5",
        "core-js": "^2.4.1",
        "hammerjs": "^2.0.8",
        "ngrx-store-freeze": "^0.2.0",
        "primeng": "^5.0.2",
        "rxjs": "^5.5.2",
        "tassign": "^1.0.0",
        "zone.js": "^0.8.14"
      },
      "devDependencies": {
        "@angular/cli": "^1.6.2",
        "@angular/compiler-cli": "^5.0.0",
        "@angular/language-service": "^5.0.0",
        "@types/jasmine": "~2.5.53",
        "@types/jasminewd2": "~2.0.2",
        "@types/node": "~6.0.60",
        "codelyzer": "~3.2.0",
        "jasmine-core": "~2.6.2",
        "jasmine-spec-reporter": "~4.1.0",
        "karma": "~1.7.0",
        "karma-chrome-launcher": "~2.1.1",
        "karma-cli": "~1.0.1",
        "karma-coverage-istanbul-reporter": "^1.2.1",
        "karma-jasmine": "~1.1.0",
        "karma-jasmine-html-reporter": "^0.2.2",
        "protractor": "~5.1.2",
        "ts-loader": "^2.3.7",
        "ts-node": "~3.2.0",
        "tslint": "~5.7.0",
        "typescript": "~2.4.2"
      }

因此,当在Angular-CLI应用程序中遇到此问题时。这是发生的情况:ng服务,ng服务--aot不会产生异常,一切正常。仅运行ng serve --prod会在浏览应用程序时中断。 ...

angular angular-cli typeerror aot
1个回答
0
投票

您可以通过单击以下命令来检查确切的问题在哪里。

© www.soinside.com 2019 - 2024. All rights reserved.