Search code examples
node.jsubuntunpmelectrondbus

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


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 ?


Solution

  • You need to run

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

    More on using native node modules in electron here