From af51585ba5e0fd1f5fc3033d1b5a1d46125cc81e Mon Sep 17 00:00:00 2001 From: "Jason.Li" Date: Wed, 27 Jan 2021 14:15:55 +0800 Subject: [PATCH] fix: Cannot read property 'BrowserWindow' of undefined issue when install devtron As the methods of: electron.remote.BrowserWindow.getDevToolsExtensions was obsolete, this fix is trying to locate get/add/remove extension methods in [session] instead of BrowserWindow. --- api.js | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/api.js b/api.js index 3cdabe2..624dcb5 100644 --- a/api.js +++ b/api.js @@ -1,28 +1,30 @@ -const electron = require('electron') +const { session } = require('electron') exports.install = () => { + const ses = session.defaultSession + if (process.type === 'renderer') { - console.log(`Installing Devtron from ${__dirname}`) - if (electron.remote.BrowserWindow.getDevToolsExtensions && - electron.remote.BrowserWindow.getDevToolsExtensions().devtron) return true - return electron.remote.BrowserWindow.addDevToolsExtension(__dirname) + console.log(`Installing [renderer] Devtron from ${__dirname}`) + if (ses.getAllExtensions && ses.getAllExtensions().devtron) return true + return ses.loadExtension(__dirname) } else if (process.type === 'browser') { - console.log(`Installing Devtron from ${__dirname}`) - if (electron.BrowserWindow.getDevToolsExtensions && - electron.BrowserWindow.getDevToolsExtensions().devtron) return true - return electron.BrowserWindow.addDevToolsExtension(__dirname) + console.log(`Installing [browser] Devtron from ${__dirname}`) + if (ses.getAllExtensions && ses.getAllExtensions().devtron) return true + return ses.loadExtension(__dirname) } else { throw new Error('Devtron can only be installed from an Electron process.') } } exports.uninstall = () => { + const ses = session.defaultSession + if (process.type === 'renderer') { - console.log(`Uninstalling Devtron from ${__dirname}`) - return electron.remote.BrowserWindow.removeDevToolsExtension('devtron') + console.log(`Uninstalling [renderer] Devtron from ${__dirname}`) + return ses.removeExtension('devtron') } else if (process.type === 'browser') { - console.log(`Uninstalling Devtron from ${__dirname}`) - return electron.BrowserWindow.removeDevToolsExtension('devtron') + console.log(`Uninstalling [browser] Devtron from ${__dirname}`) + return ses.removeExtension('devtron') } else { throw new Error('Devtron can only be uninstalled from an Electron process.') }