Ionic 'build –prod' завершается ошибкой, когда InjectionToken используется в качестве зависимости - PullRequest
1 голос
/ 30 сентября 2019

Во-первых, это часть массива провайдеров в моем модуле:

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 голосов
/ 30 сентября 2019

Тестируете ли вы код на устройстве или в браузере? Я думаю, что браузер не поддерживает токены. Это услуга, которую можно использовать только на устройстве

0 голосов
/ 30 сентября 2019

Правильный формат для создания токена зависимости. Я не знаю, можно ли опустить конструктор, как это делает ваш код.

const MY_SERVICE_TOKEN = new InjectionToken<MyService>('Manually constructed MyService', {
  providedIn: 'root',
  factory: myDepServiceFactory,
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...