未处理的承诺拒绝AOT(提前)Angular 2

时间:2016-12-29 20:35:50

标签: node.js asp.net-mvc angular angular2-aot

我有一个小的Angular 2应用程序从ASP.net MVC Web API获取数据。使用身份验证我试图在Angular 2中使用Ahead Of Time编译器。我正在运行以下命令

  

node_modules \ .bin \ ngc -p src

但我收到了以下错误

  

(node:13640)UnhandledPromiseRejectionWarning:未处理的承诺   rejection(拒绝id:2):TypeError:右边的   'instanceof'不是对象(节点:13640)DeprecationWarning:   未处理的承诺拒绝已被弃用。在未来,承诺   未处理的拒绝将终止Node.js进程   使用非零退出代码。

有人可以告诉我如何解决它

  

这是我的目录结构

我已将tsconfig.json从root移动到src文件夹,因为它是在link

中指向的

Directory structure

  

这就是我使用诺言的方式

我已经提供了服务,我可以从中回复这样的承诺:

<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.7.0</version>

并在像这样的组件中使用它

public get(servicename: string) {
    this.colorlog.log('get ' + servicename + " ",enmMessageType.Info);
    return this.http.get(this.ngWEBAPISettings.apiServiceBaseUri + "api/" + servicename + "/", this.ngWEBAPISettings.getConfig()).toPromise();
}

这是我的ts.config文件。

get() {
    var promise = this.setupServicePromise.get(this.SERVICE_NAME);

    promise.then((response: any) => {
      this.colorlog.log('in then promise ProductComponent get' + response,   enmMessageType.Data);
      this.vm.Products = response.json();
    }).catch((error: any) => {
      this.colorlog.log("Error Occurred in product", enmMessageType.Error);
    });
}

1 个答案:

答案 0 :(得分:1)

我已按照以下步骤完成此操作

<强>第一

我更新了 MrJSingh

中提到的版本

更新后, package.json 依赖项部分变为这样。

"dependencies": {
  "@angular/common": "~2.4.0",
  "@angular/compiler": "~2.4.0",
  "@angular/compiler-cli": "^2.4.1",
  "@angular/core": "~2.4.0",
  "@angular/forms": "~2.4.0",
  "@angular/http": "~2.4.0",
  "@angular/platform-browser": "~2.4.0",
  "@angular/platform-browser-dynamic": "~2.4.0",
  "@angular/router": "~3.4.0",
  "core-js": "^2.4.1",
  "rxjs": "5.0.1",
  "zone.js": "^0.7.4"
},

<强>第二

之后我更改了 app.module.ts 文件并将 useValue 更改为 useFactory

更改此

let authService = new AuthService(new LocalStorage());
providers: [
  {provide:AuthService,useValue:authService},
  AdminAuthGuard,
  UserAuthGuard,
  SetupServicePromise,
  SetupServiceObservables
]

到这个

export function authServiceFactory() {
  return new AuthService(new LocalStoragee());
}

providers: [
  {provide:AuthService,useFactory:authServiceFactory},
  AdminAuthGuard,
  UserAuthGuard,
  WebAPISettings,
  LoginService,
  SetupServicePromise,
  SetupServiceObservables
]

最后,在这两个步骤之后命令成功运行。

  

注意

对于最新版本,请使用声明而不是提供者

declarations: [
  {provide:AuthService,useFactory:authServiceFactory},
  AdminAuthGuard,
  UserAuthGuard,
  WebAPISettings,
  LoginService,
  SetupServicePromise,
  SetupServiceObservables
]

有关详细信息,请查看此link