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

Node/sqlite3中run方法回调首参类型与实际行为不符问题咨询

问题分析与解决方案

核心问题:回调参数顺序写反了

你的代码里回调函数的参数顺序完全搞反了——sqlite3的run方法遵循Node.js错误优先回调的标准约定:

  • 回调的第一个参数始终是err(错误对象,操作成功时为null)
  • 第二个参数才是RunResult对象

你现在把回调写成(result: RunResult, err: Error),所以当SQL执行出错时,第一个参数自然接收到的是Error对象,和你看到的现象完全吻合。

类型定义不匹配的原因

你使用的@types/sqlite3@3.1.8版本过于陈旧,和sqlite3@5.0.11的实际API行为脱节。旧类型定义里的参数声明是错误的,没有跟上库的更新。

修正步骤

  1. 调整回调参数顺序,改成错误优先的标准格式:
const cb = (err: Error | null, result: RunResult) => {
  if (err) {
    reject(err);
  } else {
    resolve(result);
  }
};

同时修改run调用处的回调参数类型声明,保持一致。

  1. 升级类型定义包,安装与sqlite3@5.0.11匹配的最新版@types/sqlite3,避免后续再出现类型和实际行为不符的问题:
npm install @types/sqlite3@latest --save-dev

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:30:56