37 lines
1.6 KiB
JavaScript
37 lines
1.6 KiB
JavaScript
const path = require("path");
|
|
|
|
const root = path.join(__dirname, "..");
|
|
const minimumNodeMajor = 18;
|
|
|
|
function fail(message, details = []) {
|
|
console.error(`Verification preflight failed: ${message}`);
|
|
for (const detail of details) console.error(`- ${detail}`);
|
|
process.exitCode = 1;
|
|
}
|
|
|
|
const nodeMajor = Number.parseInt(process.versions.node.split(".")[0], 10);
|
|
if (!Number.isFinite(nodeMajor) || nodeMajor < minimumNodeMajor) {
|
|
fail(`Lumi requires Node.js ${minimumNodeMajor} or newer; this process is ${process.version}.`, [
|
|
"Install a supported Node.js release, reopen the terminal, then run npm install."
|
|
]);
|
|
} else {
|
|
try {
|
|
const BetterSqlite3 = require("better-sqlite3");
|
|
const database = new BetterSqlite3(":memory:");
|
|
database.prepare("SELECT 1 AS ready").get();
|
|
database.close();
|
|
} catch (error) {
|
|
fail("The better-sqlite3 native module is missing or incompatible with this Node.js installation.", [
|
|
`Node: ${process.version} (${process.platform} ${process.arch})`,
|
|
`Module error: ${error.message}`,
|
|
`From ${root}, run npm install. Do not use --ignore-scripts because native modules must be built or downloaded.`,
|
|
"If Node.js was upgraded after installation, run npm rebuild better-sqlite3 or remove node_modules and run npm install again.",
|
|
"On Linux, ensure a compiler toolchain and Python are available if no prebuilt binary exists."
|
|
]);
|
|
}
|
|
}
|
|
|
|
if (!process.exitCode) {
|
|
console.log(`Verification preflight passed: Node ${process.version}, better-sqlite3 loaded (${process.platform} ${process.arch}).`);
|
|
}
|