Dexie 不在生产版本中存储数据,但在开发版本中一切正常

Posted

技术标签:

【中文标题】Dexie 不在生产版本中存储数据,但在开发版本中一切正常【英文标题】:Dexie not store data in production build, but all works normally in dev build 【发布时间】:2021-10-20 09:37:33 【问题描述】:

我编写了一个基于 Vue v2 和 Vuex 的应用程序,它使用 Dexie 作为 IndexedDB 的数据访问层。在 Dexie 之上,我放置了另一个使用存储库模式的层来管理实体实例的创建和持久性。使用 vue-cli 的 dev-server 时一切正常。当我构建应用程序的开发版本时也可以正常工作。但是当我为生产构建时,应用程序正确初始化,Dexie 基于定义的模式创建 de DB,但不向 db 写入任何数据。因此,当尝试读取不存在的数据时,应用程序会失败。

最后,Dexie 不要抛出任何错误来帮助我了解发生了什么。

app代码很大,所以在写一个小例子重现de错误之前,我在这里问是否有人遇到我的同样问题。

提前很多。

【问题讨论】:

至少你应该添加一些构建脚本或配置 我使用默认配置运行 vue-cli "npm run build" 命令。任何使用 vue-cli 的人都可以使用这些。 vue-cli生成的配置需要post吗? 【参考方案1】:

生产版本是否来自不同的来源?可能在该来源已经存在同名的数据库,该数据库在其架构中配置了其他主键,或者在相同或更高版本上,因此无法升级。

你可以尝试的事情:

    升级到 dexie@latest npm i dexie@latest(或 dexie@next)可能会比旧版本更好地警告现有的不兼容架构。 捕获 db.open() 返回的承诺并记录它。它可能会揭示有关无法打开数据库的重要信息。 在 Dexie 构造函数中为 DB 指定一个不同的名称,或者在刷新页面之前使用 devtools 将其删除。

【讨论】:

以上是关于Dexie 不在生产版本中存储数据,但在开发版本中一切正常的主要内容,如果未能解决你的问题,请参考以下文章

VideoView 不在 android Q 中播放视频,但在较低的 android 版本中工作正常

有啥理由不在生产版本中启用 CODE_ANALYSIS?

Tailwind 不在生产版本中应用自定义字体系列

如何避免在版本控制中存储密码?

盖茨比动态样式在生产版本中不起作用

如何在电子的生产版本上运行闪存?