を見つけることができません、私は次のようなエラーが発生します。が電子ではモジュールの../dialog '(電子致命的なエラー)
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)
これは、Linuxで失敗した子プロセスの産卵で発生します。奇妙な私はその周りのtry catchブロックを持っている、まだelectron.asarからブラウザ/ init.jsのコードに見られるように、それはまだ、uncaughtexceptionにつながるので:
// 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)
}
としては、私のコードが入っている、と述べました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);
}
しかし、コールバックとキャッチブロックには到達しません。ここで何が起こっているのか、デフォルトのダイアログモジュールが見つからないのはなぜですか?
こんにちは、私は自分自身でダイアログを要求していません。これはbrowser/init.jsのelectron.asarで起こります。これは捕らえられない例外のためです。電子はダイアログボックスを表示しようとしますが、ダイアログモジュールを必要とせず、したがってエラーです。私のコールバックはそれが前にexecステートメントであったためでした、はい、私はそれを取り除くことができます。私は試しに他の場所でキャッチすることによってあなたが何を意味するのか分からないのですか? childProcess変数のrequireはページの一番上にあります。 const childProcess = require( "child_process"); – Wesley
子プロセス自体はJava実行可能ファイルです。しかし、私はserver.stderr.on( "data"、function(){})コールバックも持っています。全体がtry catchブロックにあります。 – Wesley