类型“ SQLiteOriginal”不能分配给类型“ Provider”

时间:2019-01-28 05:35:55

标签: ionic4

我是Ionic 4的新手,正在尝试使SQLite工作。我添加了cordova插件和ionic native 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 {}

有人可以帮忙吗?

6 个答案:

答案 0 :(得分:3)

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

https://ionicframework.com/docs/native

答案 1 :(得分: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

答案 2 :(得分:1)

在任何要导入本机插件的位置,您都需要添加/ ngx/。

此外,这必须在整个项目中完成,否则错误仍然会出现。

错误示例:

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

真实示例:

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

答案 3 :(得分:0)

它的发生是由于离子4的新更新。

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

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

否则将退回到离子v4。

More info here

答案 4 :(得分:0)

导入:

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

并添加到提供程序中:

providers: [
   SQLite,
   SQLitePorter
]

如果从其他路径导入它们,通常会发生这种情况。

答案 5 :(得分:0)

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