Skip to content

Uncaught TypeError: promisify is not a function (Electron-Vite & React) #1417

@oproso

Description

@oproso

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

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions