本地存储离子2错误

V. *_*vet 0 android ios cordova ionic2

我尝试在我的Ionic 2应用程序中使用它:https: //ionicframework.com/docs/v2/storage/

我已经跑了

cordova plugin add cordova-sqlite-storage --save
Run Code Online (Sandbox Code Playgroud)

npm install --save @ionic/storage
Run Code Online (Sandbox Code Playgroud)

成功.

当我尝试在app.module.ts中添加存储时,我遇到了这个错误:

Error: Can't resolve all parameters for Storage: (?).
    at v (http://localhost:8100/build/polyfills.js:3:4864)
    at SyntaxError.BaseError [as constructor] (http://localhost:8100/build/main.js:127193:27)
    at new SyntaxError (http://localhost:8100/build/main.js:11660:16)
    at CompileMetadataResolver._getDependenciesMetadata (http://localhost:8100/build/main.js:27183:31)
    at CompileMetadataResolver._getTypeMetadata (http://localhost:8100/build/main.js:27058:26)
    at CompileMetadataResolver._getInjectableMetadata (http://localhost:8100/build/main.js:27046:21)
    at CompileMetadataResolver.getProviderMetadata (http://localhost:8100/build/main.js:27288:40)
    at http://localhost:8100/build/main.js:27246:49
    at Array.forEach (native)
    at CompileMetadataResolver._getProvidersMetadata (http://localhost:8100/build/main.js:27213:19)
    at CompileMetadataResolver.getNgModuleMetadata (http://localhost:8100/build/main.js:26897:50)
    at JitCompiler._loadModules (http://localhost:8100/build/main.js:72991:64)
    at JitCompiler._compileModuleAndComponents (http://localhost:8100/build/main.js:72951:52)
    at JitCompiler.compileModuleAsync (http://localhost:8100/build/main.js:72917:21)
    at PlatformRef_._bootstrapModuleWithZone (http://localhost:8100/build/main.js:52753:25)
Run Code Online (Sandbox Code Playgroud)

我不明白我该如何解决它.

我的app.module.ts:

import { Storage } from '@ionic/storage';
...

providers: [
    {provide: ErrorHandler, useClass: IonicErrorHandler},
    PData,
    PBackground,
    PTranslate,
    Storage
  ]

...
Run Code Online (Sandbox Code Playgroud)

小智 11

自Ionic 2.2.0以来,建议使用@ ionic/storage version 2.0.0.自上一版本以来,app.modules.ts中的配置已更改.如果您没有以正确的方式更改所有内容,则会发生错误.

在app.modules.ts中进行以下更改:

  1. 从提供商处删除存储
  2. 更改进口声明:

    从: import { Storage } from '@ionic/storage';

    至: import { IonicStorageModule } from '@ionic/storage';

  3. 将以下内容添加到imports数组中:

    IonicStorageModule.forRoot()

导入数组应如下所示:

imports: [
  IonicModule.forRoot(MyApp),
  IonicStorageModule.forRoot()
],
Run Code Online (Sandbox Code Playgroud)



注意:不要在任何其他文件中对Storage的导入进行任何更改.

  • @ V.Pivet他们做到了!! 文档存在阅读大声笑你可以看看与存储[这里](https://github.com/driftyco/ionic/blob/master/CHANGELOG.md#ionic-storage)和[这里]相关的变化( https://github.com/driftyco/ionic-storage/releases/tag/v2.0.0).在更改日志中,他们明确地说****:注意:如果您使用离子存储,则需要将其更新为2.0.0,否则您将遇到类似于此的错误:错误:无法解析所有参数对于存储:(?,?)..有关更多信息,请参阅存储文档 (2认同)