diff --git a/default_app/main.js b/default_app/main.js index e9b744c603ff..e26c70590b1a 100644 --- a/default_app/main.js +++ b/default_app/main.js @@ -1,6 +1,7 @@ const {app, dialog, shell, Menu} = require('electron') const fs = require('fs') +const Module = require('module') const path = require('path') const repl = require('repl') const url = require('url') @@ -222,7 +223,7 @@ app.once('ready', () => { }) if (option.modules.length > 0) { - require('module')._preloadModules(option.modules) + Module._preloadModules(option.modules) } function loadApplicationPackage (packagePath) { @@ -238,11 +239,13 @@ function loadApplicationPackage (packagePath) { try { packageJson = JSON.parse(fs.readFileSync(packageJsonPath)) } catch (e) { - showErrorMessage('Unable to parse package.json.\n\n' + - `${e.toString()} in ${packageJsonPath}`) + showErrorMessage(`Unable to parse ${packageJsonPath}\n\n${e.message}`) + return } - if (packageJson.version) app.setVersion(packageJson.version) + if (packageJson.version) { + app.setVersion(packageJson.version) + } if (packageJson.productName) { app.setName(packageJson.productName) } else if (packageJson.name) { @@ -252,37 +255,26 @@ function loadApplicationPackage (packagePath) { app.setPath('userCache', path.join(app.getPath('cache'), app.getName())) app.setAppPath(packagePath) } - const Module = require('module') + try { Module._resolveFilename(packagePath, module, true) } catch (e) { - showErrorMessage('Unable to find Electron app.\n\n' + - `See: ${packagePath}`) + showErrorMessage(`Unable to find Electron app at ${packagePath}\n\n${e.message}`) + return } + // Run the app. Module._load(packagePath, module, true) } catch (e) { - if (e.code === 'MODULE_NOT_FOUND') { - showErrorMessage('Unable to open Electron app.\n\n' + - `${e.toString()}`) - } else { - console.error('App threw an error when running', e) - throw e - } + console.error('App threw an error during load') + console.error(e.stack || e) + throw e } } function showErrorMessage (message) { app.focus() - dialog.showMessageBox({ - message: 'Error opening app', - detail: message, - buttons: ['OK', 'Learn More'] - }, (response) => { - if (response === 1) { - shell.openExternal('http://electron.atom.io/docs') - } - }) + dialog.showErrorBox('Error launching app', message) process.exit(1) } @@ -313,12 +305,11 @@ if (option.file && !option.webdriver) { console.log('v' + process.versions.electron) process.exit(0) } else if (option.help) { - const helpMessage = `Electron v${process.versions.electron} - Cross Platform Desktop Application Shell + const helpMessage = `Electron ${process.versions.electron} - Build cross platform desktop apps with JavaScript, HTML, and CSS Usage: electron [options] [path] - A path to an Electron application may be specified. - The path must be one of the following: + A path to an Electron app may be specified. The path must be one of the following: - index.js file. - Folder containing a package.json file.