瀏覽代碼

fix: Node < 22.5 时明确返回 sqlite-unavailable(前端提示升级而非笼统的连接失败)

liangzhao 2 周之前
父節點
當前提交
9ed909fe00
共有 1 個文件被更改,包括 10 次插入 和 1 次删除
  1. 10 1
      server/stores/ops-sqlite.js

+ 10 - 1
server/stores/ops-sqlite.js

@@ -97,7 +97,16 @@ function createSqliteStore({ file }) {
   function open() {
     if (db) return db;
     fs.mkdirSync(path.dirname(dbFile), { recursive: true });
-    const { DatabaseSync } = require('node:sqlite');
+    let DatabaseSync;
+    try {
+      ({ DatabaseSync } = require('node:sqlite'));
+    } catch (e) {
+      // Node < 22.5 没有内置 sqlite:单独给一个可读原因,前端据此提示升级 Node
+      const err = new Error(`当前 Node 版本不支持内置 SQLite(需要 22.5 及以上,当前 ${process.version})`);
+      err.reason = 'sqlite-unavailable';
+      err.cause = e;
+      throw err;
+    }
     db = new DatabaseSync(dbFile);
     db.exec('PRAGMA journal_mode = WAL');
     db.exec('PRAGMA busy_timeout = 5000');