当将InjectionToken用作依赖项时,离子“ build –prod”失败

时间:2019-09-30 09:09:23

标签: angular ionic-framework build

首先,它是我的模块中providers数组的一部分:

const MyDepServiceInjectionToken = new InjectionToken('comment', {
  providedIn: 'root',
  factory: myDepServiceFactory,
});

...

providers: [{
multi: true,
  deps: [MyDepServiceInjectionToken],
  provide: HTTP_INTERCEPTORS,
  useClass: HttpResponseInterceptor,
}],

我不知道为什么,但是,如果我仅使用MyDepService类而不是注入令牌,那么一切都很好-项目构建正确。另一方面,如果我将注入令牌与服务型工厂功能 ionic build --prod 一起使用,则会失败并显示错误:

ERROR Error: Uncaught (in promise): NullInjectorError: StaticInjectorError[InjectionToken HTTP_INTERCEPTORS -> function(){return{ngModule:t,providers:[{multi:!0,deps:[fr.a],provide:Ve.a,useClass:dr},{multi:!0,deps:[vr],provide:Ve.a,useClass:mr}]}}]: 
  StaticInjectorError(Platform: core)[InjectionToken HTTP_INTERCEPTORS -> function(){return{ngModule:t,providers:[{multi:!0,deps:[fr.a],provide:Ve.a,useClass:dr},{multi:!0,deps:[vr],provide:Ve.a,useClass:mr}]}}]: 
    NullInjectorError: No provider for function(){return{ngModule:t,providers:[{multi:!0,deps:[fr.a],provide:Ve.a,useClass:dr},{multi:!0,deps:[vr],provide:Ve.a,useClass:mr}]}}!
NullInjectorError: StaticInjectorError[InjectionToken HTTP_INTERCEPTORS -> function(){return{ngModule:t,providers:[{multi:!0,deps:[fr.a],provide:Ve.a,useClass:dr},{multi:!0,deps:[vr],provide:Ve.a,useClass:mr}]}}]: 
  StaticInjectorError(Platform: core)[InjectionToken HTTP_INTERCEPTORS -> function(){return{ngModule:t,providers:[{multi:!0,deps:[fr.a],provide:Ve.a,useClass:dr},{multi:!0,deps:[vr],provide:Ve.a,useClass:mr}]}}]: (...)

哪里有问题?

2 个答案:

答案 0 :(得分:0)

用于创建依赖项令牌的正确格式是。我不知道是否可以像您的代码那样省略构造函数。

const MY_SERVICE_TOKEN = new InjectionToken<MyService>('Manually constructed MyService', {
  providedIn: 'root',
  factory: myDepServiceFactory,
});

答案 1 :(得分:0)

您是否正在设备或浏览器上测试代码?我认为浏览器不支持令牌。该服务只能在设备上使用