【问题标题】:Type 'SQLiteOriginal' is not assignable to type 'Provider'类型“SQLiteOriginal”不可分配给类型“Provider”
【发布时间】:2021-07-12 12:58:11
【问题描述】:

我是 Ionic 4 的新手,正在尝试让 SQLite 正常工作。我已经添加了cordova插件和离子原生sqlite,但是当我尝试在应用程序模块中设置它时,我得到了上述错误。这是我的应用,module.ts

import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

import { IonicStorageModule } from '@ionic/storage';
import { SQLite } from '@ionic-native/sqlite';


@NgModule({
  declarations: [AppComponent],
  entryComponents: [],
  imports: [BrowserModule, IonicModule.forRoot(), IonicStorageModule.forRoot(), AppRoutingModule],
  providers: [
    StatusBar,
    SplashScreen,
    SQLite,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

谁能帮忙?

【问题讨论】:

    标签: ionic4


    【解决方案1】:

    你必须从'@ionic-native/sqlite/ngx'导入

    https://ionicframework.com/docs/native

    【讨论】:

      【解决方案2】:

      这似乎与最近发布的 Ionic 4 有关。我在我的应用程序中遇到了 @ionic-native/file 的这个问题。如果您在发布后安装而没有指定您想要的版本,您可能获得的是最新版本或 beta 版本。

      通过修改我的package.json 以反映所需的版本,我能够通过回滚到早期版本来修复它——我安装了5.0.0 并回滚到4.20.0。如果您有 VSCode 的 VersionLens,它将显示最低和最新版本。

      然后,清除您的节点模块,然后重新安装:

      rm -rf node_modules/
      npm install
      

      这里有另一个帖子打开,可以在这里找到:

      Type HTTPOriginal is not assignable to type Provider, ionic error after plugin installation

      【讨论】:

      • 您好,感谢您的回复。我在导入中添加了 /ngx 并修复了它
      • 确实如此。这也对我有用!提示:您可能会标记一个答案,因为将来其他开发人员会更容易找到解决方案。
      【解决方案3】:

      这是由于 ionic 4 的新更新而发生的。

      您必须将 /ngx 添加到插件的导入中。像这样:

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

      否则回退到 ionic v4。

      More info here

      【讨论】:

      • 非常感谢这个提示,你拯救了我的一天 :)
      【解决方案4】:

      凡是导入原生插件的地方,都需要添加/ngx/。

      而且,这必须在整个项目中进行,否则仍然会出现错误。

      错误示例:

      import {Market} from '@ionic-native/market';
      

      真实例子:

      import {Market} from '@ionic-native/market/ngx';
      

      【讨论】:

        【解决方案5】:

        进口:

        import { SQLitePorter } from '@ionic-native/sqlite-porter/ngx';
        import { SQLite } from '@ionic-native/sqlite/ngx';
        

        并添加到提供者中:

        providers: [
           SQLite,
           SQLitePorter
        ]
        

        如果您从不同的路径导入它们,通常会发生这种情况。

        【讨论】:

          【解决方案6】:

          你必须在 app.module.ts 和你想使用它的页面上导入“@ionic-native/sqlite/ngx”。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-06-22
            • 2020-04-02
            • 2019-06-02
            • 1970-01-01
            • 2018-01-04
            • 2020-11-09
            相关资源
            最近更新 更多