typeof XService 不可分配给类型 'FactoryProvider'。 属性 'provide' 缺失

typeof XService is not assignable to type 'FactoryProvider'. Property 'provide' is missing

我在 Ionic 2 移动应用程序中有一个 Angular 2 NgModule,定义如下:

@NgModule({
  declarations: [
    MyApp,
    HomePage,
  ],
  imports: [
    IonicModule.forRoot(MyApp)
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage,
  ],
  providers: [{provide: ErrorHandler, useClass: IonicErrorHandler}, VatRatesDbService]
})
export class AppModule {}

服务是这样定义的:

import { Injectable } from '@angular/core';
import * as PouchDB from 'pouchdb';

@Injectable()
export class VatRatesDbService {

  private _db;

  private constructor() {
    this._db = new PouchDB('rates.db', { adapter: 'websql' });
  }
}

但是,我在运行时遇到以下错误:

Type 'typeof VatRatesDbService' is not assignable to type 'FactoryProvider'. Property 'provide' is missing in type 'typeof VatRatesDbService'.

解决方案是从构造函数中删除 private 修饰符。您根本无法使用私有构造函数提供可注入服务。

public constructor() {
  this._db = new PouchDB('rates.db', { adapter: 'websql' });
}

或:

constructor() {
  this._db = new PouchDB('rates.db', { adapter: 'websql' });
}

Source Link

我在最新的 Ionic 4 CLI 版本 4.9.0 中遇到了这个问题

当我在最新的 CLI 中创建旧版本的 Ionic 3 应用程序并安装 Native 插件时 App Version 我遇到了这个错误

[ts] 类型 'AppVersionOriginal' 不能分配给类型 'Provider'。 类型 'AppVersionOriginal' 缺少类型 'FactoryProvider' 的以下属性:提供、useFactory [2322]

为此,我们需要安装旧版本的本机插件

这是因为 ionic 4 的 ionic 最新更新。

你必须像这样导入它(添加 '/ngx' )

import { PluginName} from '@ionic-native/pluginName/ngx';

或者,您可以降级插件的版本

另一个插件发生在我身上。

它在 Ionic 4 中对我有用

你必须像这样导入它(添加 '/ngx' )

从“@ionic-native/pluginName/ngx”导入 {PluginName};