Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot find module '../dialog' (Electron fatal error)

In electron, I encounter the following error:

module.js:440
    throw err;
    ^

Error: Cannot find module '../dialog'
    at Module._resolveFilename (module.js:438:15)
    at Function.Module._resolveFilename (/opt/App/resources/electron.asar/common/reset-search-paths.js:47:12)
    at Function.Module._load (module.js:386:25)
    at Module.require (module.js:466:17)
    at require (internal/module.js:20:19)
    at Object.get [as dialog] (/opt/App/resources/electron.asar/browser/api/exports/electron.js:35:14)
    at process.<anonymous> (/opt/App/resources/electron.asar/browser/init.js:64:31)
    at emitOne (events.js:96:13)
    at process.emit (events.js:188:7)
    at process._fatalException (node.js:276:26)

It happens on a child process spawn that fails in Linux. Strange because I do have a try catch block around that, yet it still results in an uncaughtexception, as seen in the code in browser/init.js from electron.asar:

// Don't quit on fatal error.
process.on('uncaughtException', function (error) {
  // Do nothing if the user has a custom uncaught exception handler.
  var dialog, message, ref, stack
  if (process.listeners('uncaughtException').length > 1) {
    return
  }


 // Show error in GUI.
  dialog = require('electron').dialog
  stack = (ref = error.stack) != null ? ref : error.name + ': ' + error.message
  message = 'Uncaught Exception:\n' + stack
  dialog.showErrorBox('A JavaScript error occurred in the main process', message)
}

As said, my code is in a try catch:

try {
  server = childProcess.spawn(java, ["-jar", "App.jar"], {
    "cwd": serverDirectory,
    "detached": true
  }, function(err) {
    console.log("in callback");
  });
} catch (err) {
  console.log("here we are");
  console.log(err);
}

But neither the callback nor the catch block is reached. Any ideas what is going on here and why the default dialog module cannot be found?


1 Answers

I found same error with electron 1.6.2

Figured it was due, when closing the application an error occur and electron want to display it in a dialog, maybe the close process has started and electron can't load this module, anyway I add:

const { dialog } = require('electron');

in main.js, no more error in console instead a dialog the error, I can fix it, After that I let the require just in case.

like image 150
brouillon Avatar answered Nov 24 '25 22:11

brouillon



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!