RxDB原生JavaScript示例无法运行,storage未定义报错如何解决?
这两个问题都不是RxDB本身的bug,是操作时遗漏了必要配置导致的,具体原因和修复方案如下:
问题原因分析
1. Uncaught (in promise) TypeError: storage is undefined 报错
- 该错误是创建RxDB实例时缺少storage适配器配置导致。RxDB从10.0.0版本之后不再默认内置存储适配器,必须手动引入适配运行环境的存储适配器,在创建数据库时显式传入配置。
- 因为storage初始化失败,数据库创建流程直接中断,所以页面会一直停留在「Starting database」状态。
2. Uncaught ReferenceError: col is not defined 报错
- 该错误是前一个错误的连锁反应:数据库创建失败后,后续给
col变量赋值集合实例的代码根本没有执行,点击Insert按钮调用addHero方法时访问不存在的col变量,自然会抛出未定义错误。
修复步骤
- 第一步:引入浏览器端适配的存储适配器,如果你是通过npm安装的RxDB,导入代码如下:
import { getRxStorageDexie } from 'rxdb/plugins/storage-dexie';
- 第二步:修改
createRxDatabase方法的入参,新增storage配置项:
const db = await createRxDatabase({ name: 'heroesdb', storage: getRxStorageDexie(), // 新增该行,传入存储适配器实例 // 其余原有配置保持不变 });
- 第三步:确认集合创建逻辑正常执行,
col变量被正确赋值为hero集合的实例。
完成上述配置后两个报错都会消失,示例可以正常运行。
内容的提问来源于stack exchange,提问作者FredVal
相关产品推荐
相关产品推荐

