You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用npmjs Keyv库时出现keyv.iterator非函数错误求助

解决Keyv无法遍历所有条目的问题

问题原因

你调用的keyv.iterator()方法不存在,Keyv核心实例并未暴露该同步迭代方法,且Keyv的遍历需要使用异步迭代器,不能用普通的同步for...of循环。

解决方案

1. 使用异步迭代器遍历Keyv实例

Keyv实现了Symbol.asyncIterator接口,可直接用for await...of循环遍历实例本身,无需调用额外的iterator方法:

async function testReadDB() {
  const keyv = new Keyv('sqlite://test.sqlite');
  const test = await keyv.get("test_key");
  console.log(test);

  try {
    // 用异步循环遍历所有键值对
    for await (const [key, value] of keyv) {
      console.log(key, value);
    }
  } catch (e) {
    console.log(e.message);
  }
}

2. 确保安装对应存储适配器

若使用SQLite作为存储后端,需单独安装@keyv/sqlite适配器(Keyv核心包仅提供通用接口,具体存储后端需单独安装):

npm install @keyv/sqlite

3. 直接调用适配器原生方法(可选)

如果需要更底层的操作,可通过keyv.store访问SQLite适配器实例,调用其原生方法查询所有数据:

async function testReadDB() {
  const keyv = new Keyv('sqlite://test.sqlite');
  const test = await keyv.get("test_key");
  console.log(test);

  try {
    // 直接通过适配器查询所有条目
    const allEntries = await keyv.store.all();
    allEntries.forEach(({ key, value }) => {
      console.log(key, value);
    });
  } catch (e) {
    console.log(e.message);
  }
}

内容的提问来源于stack exchange,提问作者user3640030

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:10:28