【问题标题】:Ionic 'build –prod" fails when InjectionToken is being used as dependency当 InjectionToken 被用作依赖项时,Ionic 'build –prod' 失败
【发布时间】:2020-01-29 13:26:59
【问题描述】:

首先,它是我模块中 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}]}}]: (...)

哪里有问题?

【问题讨论】:

    标签: angular ionic-framework build


    【解决方案1】:

    创建依赖令牌的正确格式是。不知道能不能像你的代码那样省略构造函数。

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

    【讨论】:

    • 呃,对不起。我已经清理了类型和其他东西的示例代码,忘记了类构造函数。我编辑了问题。
    【解决方案2】:

    您是在设备上还是在浏览器上测试代码?我认为浏览器不支持 TOKENS。这是一项只能在设备上使用的服务

    【讨论】:

    • 我正在尝试先构建它(ionic build --prod),没有错误;-)
    • 哦,好的。所以这就是构建......我正在使用令牌,在浏览器上使用时它给了我错误......那么抱歉
    猜你喜欢
    • 2021-06-16
    • 2019-06-27
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多