use the Dbus package in an electron app (Build process)

Viewed 413

i have this problem when i require DBus from the dbus package

const { app, BrowserWindow } = require("electron");
const DBus = require('dbus');

app.whenReady().then(() => {
    var win = new BrowserWindow({ width: 600, height: 500 });
    win.loadFile('index.html');

    win.webContents.openDevTools();
});

so when i execute this code i get this error :

> electron script.js

App threw an error during load
Error: Module did not self-register: '/home/bislem/projects/test/electron/node_modules/dbus/build/Release/dbus.node'.
    at process.func [as dlopen] (electron/js2c/asar.js:140:31)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:1196:18)
    at Object.func [as .node] (electron/js2c/asar.js:140:31)
    at Module.load (internal/modules/cjs/loader.js:981:32)
    at Module._load (internal/modules/cjs/loader.js:881:14)
    at Function.Module._load (electron/js2c/asar.js:769:28)
    at Module.require (internal/modules/cjs/loader.js:1023:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (/home/bislem/projects/test/electron/node_modules/dbus/lib/dbus.js:3:13)
    at Module._compile (internal/modules/cjs/loader.js:1145:30)
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Module did not self-register: '/home/bislem/projects/test/electron/node_modules/dbus/build/Release/dbus.node'.
    at process.func [as dlopen] (electron/js2c/asar.js:140:31)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:1196:18)
    at Object.func [as .node] (electron/js2c/asar.js:140:31)
    at Module.load (internal/modules/cjs/loader.js:981:32)
    at Module._load (internal/modules/cjs/loader.js:881:14)
    at Function.Module._load (electron/js2c/asar.js:769:28)
    at Module.require (internal/modules/cjs/loader.js:1023:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (/home/bislem/projects/test/electron/node_modules/dbus/lib/dbus.js:3:13)
    at Module._compile (internal/modules/cjs/loader.js:1145:30)

I searched for this error and tried some solutions but none of them worked (npm rebuild,npm update,delete the node_modules folder then npm install,use a diffrent version of node using the nvm command), but when runing each package by his own, (run electron using the start script electron ., and run dbus with node script.js) they works correctly.

and there was this when installing the dbus package : console when installing dbus, console when installing dbus part 2

my package.json file :

{
    "name": "electrontest",
    "version": "1.0.0",
    "description": "",
    "main": "script.js",
    "scripts": {
        "start": "electron script.js",
        "test": "echo \"Error: no test specified\" && exit 1"
    },
    "keywords": [],
    "author": "",
    "license": "ISC",
    "dependencies": {
        "bootstrap": "^4.5.3",
        "dbus": "^1.0.7",
        "electron": "^10.1.5"
    }
}

so my question is what is the correct way to Build/Run such code ? || how to use these two packages side by side ?

1 Answers

You need to run

npm install --save-dev electron-rebuild && npx electron-rebuild

More on using native node modules in electron here

Related