Node.js 26.11 přejmenoval třídu DatabaseSync v modulu node:sqlite na Database
Vestavěný modul node:sqlite má od Node.js 26.11 třídy Database a Statement místo DatabaseSync a StatementSync. Stará jména fungují dál jako aliasy a nevypíšou varování o zastarání. Kdo ale přejde na nové jméno, tomu na starších řadách včetně Node.js 24 import neprojde.

Node.js 26.11.0 vyšel 7. října a mezi novinkami, které projekt v poznámkách k vydání zvýraznil, je změna pro každého, kdo používá vestavěný modul node:sqlite. Třída DatabaseSync se nově jmenuje Database a třída StatementSync se jmenuje Statement. Přejmenování přinesl pull request #65988 Guilherma Araúja, otevřený 11. září a začleněný 26. září.
Stará jména zůstávají jako aliasy
V souboru lib/sqlite.js ukazují obě stará jména na tytéž třídy, nejde tedy o kopie. Vyzkoušeli jsme to na Node.js 26.11.1, který nese SQLite 3.53.4: Database === DatabaseSync vrací true, objekt vytvořený starým jménem je instancí nové třídy a jeho konstruktor se jmenuje Database. Kontrola přes instanceof tak funguje oběma směry.
Zastarání starých jmen má čísla DEP0210 a DEP0211 a platí jen v dokumentaci. Program se starým jménem nevypíše varování o zastarání ani s přepínačem --pending-deprecation; zkoušeli jsme ho spolu s --throw-deprecation, který by z případného varování udělal chybu, a skript doběhl.
Autor původně chtěl, aby se varování vypisovalo za běhu. Rafael Gonzaga v revizi namítl, že DatabaseSync je stabilní funkce a takové zastarání by ze změny udělalo semver-major, tedy změnu, která smí přijít až s novou hlavní verzí. James Snell dodal, že zastarání má nejdřív projít fází „jen v dokumentaci“. Dokumentace přitom modul nevede jako stabilní, ale jako kandidáta na vydání (stupeň 1.2). Colin Ihrig se hned po otevření pull requestu ptal, jestli po starém jménu zůstane alias, protože bez něj by změna rozbila každého, kdo modul používá.
Na Node.js 24 nové jméno neexistuje
Potíž je v opačném směru. Na Node.js 24.15 vrací require('node:sqlite').Database hodnotu undefined, kdežto DatabaseSync funguje. Import { Database } z ES modulu tam podle rozboru Chamikary Nayanajitha z 11. října skončí chybou SyntaxError, protože modul takový export nemá.
Podle plánu vydání přechází řada 24 20. října do režimu údržby a podporovaná zůstane do 30. dubna 2028. Řada 26 se 28. října stane verzí s dlouhodobou podporou (LTS). Obě tedy poběží vedle sebe ještě rok a půl. Knihovna, která má fungovat na obou, může zůstat u starého jména, nebo si třídu vybrat za běhu:
import * as sqlite from 'node:sqlite';
const Database = sqlite.Database ?? sqlite.DatabaseSync;
const db = new Database(':memory:');
Odstranění aliasů zatím nikdo nenaplánoval. Dokumentace modulu na nodejs.org už ve všech ukázkách používá nové jméno.
Přejmenování bylo na seznamu překážek stabilizace
Modul node:sqlite přibyl ve verzi 22.5.0, od 22.13.0 už nepotřebuje přepínač --experimental-sqlite a od 25.7.0 má v dokumentaci stupeň kandidáta na vydání. O tom, co chybí ke stabilizaci, se vede issue #57445, otevřené od března 2025. Trevor Burnham do něj 4. srpna sepsal seznam překážek. Přejmenování v něm označil za jedinou položku, kterou by po stabilizaci bylo podstatně těžší udělat.
Otevřené zůstává asynchronní rozhraní. Pull request #62015, který přidává asynchronní třídu Database, čeká od února a s přejmenováním se srazil, protože to jméno teď patří synchronní třídě. Burnham navrhl dát asynchronní variantu do samostatné cesty node:sqlite/promises, podobně jako to má fs nebo stream. Autor pull requestu se 23. září zeptal, jestli se tedy bude importovat jako import { Database } from "node:sqlite/promises". Burnham odpověděl, že by to tak čekal, ale za ostatní z týmu mluvit nemůže. Rozhodnuto to zatím není.
Zdroje
- Node.js: Node.js 26.11.0 (Current), poznámky k vydání ze 7. října 2026
- GitHub: pull request #65988 a diskuse v revizi
- Node.js: seznam zastaralých API, DEP0210 a DEP0211
- Node.js: dokumentace modulu node:sqlite
- GitHub: issue #57445, seznam překážek stabilizace
- GitHub: pull request #62015 s asynchronním API
- Node.js: plán vydání a podpory
- Chamikara Nayanajith: Node SQLite, the built-in node:sqlite module in Node 26 (11. října 2026)