diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..2bd5a0a --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +22 diff --git a/README.md b/README.md index b827664..271e663 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Gemeinsame Verwaltung von Motorrädern, Wartungen, TÜV-/Inspektionsterminen und ## Lokale Entwicklung -Voraussetzungen: Node.js 24 und npm. +Voraussetzungen: Node.js 22 oder neuer und npm. ```powershell Copy-Item .env.example .env.local diff --git a/package-lock.json b/package-lock.json index cc4ddc2..80f0ed0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,9 @@ "eslint-config-next": "16.2.12", "tailwindcss": "^4", "typescript": "^5" + }, + "engines": { + "node": ">=22.0.0" } }, "node_modules/@alloc/quick-lru": { diff --git a/package.json b/package.json index 3530941..cc4db06 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,13 @@ "name": "familien-motorrad-tracker", "version": "0.1.0", "private": true, + "engines": { + "node": ">=22.0.0" + }, "scripts": { + "predev": "node scripts/check-node-sqlite.mjs", + "prebuild": "node scripts/check-node-sqlite.mjs", + "prestart": "node scripts/check-node-sqlite.mjs", "dev": "next dev", "build": "next build", "start": "next start", diff --git a/scripts/check-node-sqlite.mjs b/scripts/check-node-sqlite.mjs new file mode 100644 index 0000000..b321a22 --- /dev/null +++ b/scripts/check-node-sqlite.mjs @@ -0,0 +1,21 @@ +const [major, minor] = process.versions.node.split(".").map(Number); + +const minMajor = 22; +const minMinor = 5; +const current = process.versions.node; + +if (major < minMajor || (major === minMajor && minor < minMinor)) { + console.error( + `Node.js ${minMajor}.${minMinor}+ wird benötigt (aktuell ${current}). Bitte Node aktualisieren und npm install erneut ausführen.`, + ); + process.exit(1); +} + +try { + await import("node:sqlite"); +} catch { + console.error( + `Das Modul "node:sqlite" ist in deiner Node.js-Installation (${current}) nicht verfügbar. Bitte auf eine aktuelle Node-Version wechseln (empfohlen: 24.x) und npm install erneut ausführen.`, + ); + process.exit(1); +}