-
-
Notifications
You must be signed in to change notification settings - Fork 430
Open
Description
Error displays when running my app (browser & desktop). I've seen this error be asked about before and it doesn't seem to be an issue with better-sqlite3, though I still don't have a solution. I want to create a local database for handling users.
Node: v22.20.0
OS: Debian GNU/Linux 13 (trixie)
package.json
{
"name": "amas-monitor",
"version": "1.0.0",
"type": "module",
"description": "",
"main": "./out/main/index.js",
"author": "",
"homepage": "",
"scripts": {
"format": "prettier --write .",
"lint": "eslint --cache .",
"start": "electron-vite preview",
"dev": "electron-vite dev",
"build": "electron-vite build",
"rebuild": "electron-rebuild -f -w better-sqlite3",
"postinstall": "electron-builder install-app-deps",
"build:unpack": "npm run build && electron-builder --dir",
"build:win": "npm run build && electron-builder --win",
"build:mac": "npm run build && electron-builder --mac",
"build:linux": "npm run build && electron-builder --linux"
},
"dependencies": {
"@electron-toolkit/preload": "^3.0.2",
"@electron-toolkit/utils": "^4.0.0",
"@influxdata/influxdb-client": "^1.35.0",
"@vnedyalk0v/react19-simple-maps": "^1.2.0",
"argon2": "^0.44.0",
"better-sqlite3": "^12.4.1",
"chart.js": "^4.5.1",
"chartjs-adapter-date-fns": "^3.0.0",
"chartjs-plugin-datalabels": "^2.2.0",
"cors": "^2.8.5",
"electron-updater": "^6.3.9",
"express": "^5.1.0",
"ffmpeg": "^0.0.4",
"leaflet": "^1.9.4",
"prop-types": "^15.8.1",
"react-chartjs-2": "^5.3.0",
"react-icons": "^5.5.0",
"react-leaflet": "^5.0.0",
"react-notifications": "^1.7.4",
"react-router-dom": "^7.9.5",
"sqlite3": "^5.1.7"
},
"devDependencies": {
"@electron-toolkit/eslint-config": "^2.1.0",
"@electron-toolkit/eslint-config-prettier": "^3.0.0",
"@vitejs/plugin-react": "^5.0.3",
"electron": "^38.4.0",
"electron-builder": "^25.1.8",
"electron-rebuild": "^3.2.9",
"electron-vite": "^4.0.1",
"eslint": "^9.36.0",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.20",
"prettier": "^3.6.2",
"react": "^19.2.0",
"react-dom": "^19.1.1",
"vite": "^7.1.10"
}
}
users.js
import Database from 'better-sqlite3'
import argon2 from 'argon2'
const db = new Database('users.db')
db.pragma('journal_mode = WAL')
export const seedUsers = [
{
email: '[email protected]',
password: 'admin',
role: 'admin'
},
{
email: '[email protected]',
password: 'technician',
role: 'technician'
},
{
email: '[email protected]',
password: 'operator',
role: 'operator'
}
]
export async function initUserDatabase() {
db.exec(`
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
email TEXT UNIQUE NOT NULL,
password_hash TEXT NOT NULL,
role TEXT NOT NULL
);
`)
const count = db.prepare('SELECT COUNT(*) as n FROM users').get().n
if (count === 0) {
console.log('[db] seeding default users…')
const insert = db.prepare(`
INSERT INTO users (email, password_hash, role)
VALUES (@email, @password_hash, @role)
`)
for (const u of seedUsers) {
const hash = await argon2.hash(u.password)
insert.run({
email: u.email,
password_hash: hash,
role: u.role
})
}
}
console.log('[db] users ready')
}
console error

Metadata
Metadata
Assignees
Labels
No labels