You need to enable JavaScript to run this app. Node.js中如何正确导出导入sqlite3数据库实例 解决调用报错问题
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中如何正确导出导入sqlite3数据库实例 解决调用报错问题

问题原因

你当前的导出导入逻辑不匹配:你在app.js中将数据库实例挂载到了exports对象的db属性上,在main.js导入时直接将整个导出对象赋值给了db变量,此时你的db变量实际是{ db: 数据库实例 }的包装对象,并非数据库实例本身,所以调用db.get会提示方法不存在。

解决方案

提供两种可直接复用的写法,选其中一种即可:

方案1:导入时解构取值

保持app.js的导出逻辑exports.db = db不变,修改main.js的导入代码:

// main.js 写法
const { db } = require("../app.js");
// 后续可正常调用 db.get 等方法

方案2:直接导出数据库实例(更推荐)

修改app.js的导出逻辑,直接暴露数据库实例,不需要额外挂载属性:

// app.js 导出部分修改
const sqlite3 = require("sqlite3").verbose();
let db = new sqlite3.Database("./DB/Datenbank.db");

module.exports = db;

main.js可以保持原导入逻辑不变:

// main.js 写法
const db = require("../app.js");

优化建议

为了避免多处导入时重复创建数据库连接,可以用单例模式封装实例创建逻辑:

// app.js 优化后写法
const sqlite3 = require("sqlite3").verbose();
let dbInstance = null;

function getDb() {
  if (!dbInstance) {
    dbInstance = new sqlite3.Database("./DB/Datenbank.db");
  }
  return dbInstance;
}

module.exports = getDb();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 20:06:09