MarshallOfSound / electron-devtools-installer

An easy way to ensure Chrome DevTools extensions into Electron
MIT License
1.11k stars 136 forks source link

REACT DEV TOOL need a reload to appear #244

Open elvince opened 7 months ago

elvince commented 7 months ago

Hi all,

Thanks for the repo, it is quite straight forward to setup.

However, I can't get the tools to popup in the devtool page until I reload the main page.

If I await installExtension(REACT_DEVELOPER_TOOLS, true), the tools are not loaded at first launch, I need to reload them. If I manually load them await session.defaultSession.loadExtension, evertyhing load fine from scratch.

Any idea how solve this? Maybe a missing await in the installation process? It seems to be a race condition.

Thanks

JordanDC2 commented 6 months ago

I am seeing this same issue as well with latest version of electron and electron-devtools-installer.

vasilecampeanu commented 6 months ago

I am seeing this same issue as well with latest version of electron and electron-devtools-installer.

Did you manage to find a fix?

ehellman commented 5 months ago

I am having this issue too.

session.defaultSession.getAllExtensions().map(e => {
  if (e.name === 'React Developer Tools') {
    session.defaultSession.loadExtension(e.path);
  }
});

This works, but should load automatically I think.

pjmdesi commented 4 months ago

Seeing the same issue here. I simply run a reload after a timeout and it seems to do the trick

DEV && setTimeout(() => {
    mainWindow.reload();
}, 500);
maoryadin commented 3 months ago

I am having this issue too.

session.defaultSession.getAllExtensions().map(e => {
  if (e.name === 'React Developer Tools') {
    session.defaultSession.loadExtension(e.path);
  }
});

This works, but should load automatically I think.

Why not just load all?

   session.defaultSession.getAllExtensions().map((e) => {
      session.defaultSession.loadExtension(e.path)
    })
aymengraoui commented 2 months ago

i cant make any extension appear no matter what i do im on electron 31 and i cant find any solution for this

aluminum1 commented 2 months ago

Same issue as aymengraoui.

danthegoodman commented 1 month ago

I pasted this workaround and an explanation over in another issue: https://github.com/MarshallOfSound/electron-devtools-installer/issues/238#issuecomment-2227172999

async function loadDevtools() {
  const edi = await import('electron-devtools-installer');
  const installExtension = edi.default.default;
  await installExtension(edi.REDUX_DEVTOOLS);
  await installExtension(edi.REACT_DEVELOPER_TOOLS);

  // hack because extension service workers aren't loaded until after first launch
  const win = new BrowserWindow({
    show: false,
    webPreferences: { devTools: true },
  });
  await win.loadURL('about:blank');
  win.webContents.openDevTools({ mode: 'detach', activate: false });
  await new Promise<void>((resolve, reject) => {
    let checksLeft = 300;
    const interval = setInterval(() => {
      const all = session.defaultSession.serviceWorkers.getAllRunning();
      if (Object.keys(all).length > 0) {
        clearInterval(interval);
        resolve();
      } else {
        checksLeft -= 1;
        if (checksLeft <= 0) {
          clearInterval(interval);
          reject(new Error('react dev tools failed to load a service worker'));
        }
      }
    }, 10);
  });
  win.close();
}
aymengraoui commented 1 month ago

Hi @danthegoodman thanks for the workaround it didn't work for me, the problem with the workers i bumper the checks to 10000 and nothing i might dig into this workaround if i have time, for now i gave up on this i installed extensions i need globally and linked them to my app using urls