Electron: TypeError: BrowserWindow.addDevToolsExtension не является функцией

Созданный на 10 февр. 2020  ·  7Комментарии  ·  Источник: electron/electron

Детали проблемы

  • Электронная версия:

    • 8.0.0

  • Операционная система:

    • Windows 10 Pro (1909), сборка ОС x64 18363.418

Ожидаемое поведение

Установите React-Devtool

Фактическое поведение

TypeError: BrowserWindow.addDevToolsExtension не является функцией

Скриншоты

image

8-x-y bug platforwindows

Самый полезный комментарий

Расширения Devtron, React и Redux не устанавливаются в окнах браузера. Если кто-нибудь знает обходной путь, хотелось бы услышать.

[electron] Added Extension: React Developer Tools
[electron] Added Extension: Redux DevTools
[electron] [41948:0228/141801.424392:ERROR:CONSOLE(1)] "Uncaught TypeError: Cannot read[electron] [41948:0228/141801.424392:ERROR:CONSOLE(1)] "Uncaught TypeError: Cannot read property 'panels' of undefined", source: chrome-extension://redux-devtools/js/devtools.bundle.js (1)
[electron] [41948:0228/141801.512131:ERROR:CONSOLE(40)] "Uncaught TypeError: Cannot read property 'inspectedWindow' of undefined", source: chrome-extension://react-developer-tools/build/main.js (40)
[electron] Unable to create basic Accelerated OpenGL renderer.
[electron] Unable to create basic Accelerated OpenGL renderer.
[electron] Core Image is now using the software OpenGL renderer. This will be slow.

Все 7 Комментарий

Спасибо, что нашли время сообщить об этой проблеме и помогли улучшить Electron.

Предоставьте автономный тест, который тестер мог бы запустить для воспроизведения проблемы. Это упрощает устранение проблем: это не только гарантирует, что проверяется то, что нужно, но и предотвращает возникновение узких мест при сортировке, заставляя тестировщиков писать новые тесты для каждой новой проблемы.

По указанным выше причинам я устанавливаю метку "Требуется дополнительная информация". После того, как вы ответите, пожалуйста, @ me в последующем комментарии.

Заранее спасибо! Ваша помощь очень ценится.

@MarshallOfSound
Не знаю, нужен ли вам фрагмент в main.js, но вот он

const { app, BrowserWindow, ipcMain } = require('electron');
const path = require('path');
const url = require('url');
const scraper = require('./scraper.js');
const helpers = require('./electron/helpers.js');
const windowStateKeeper = require('electron-window-state');
const { autoUpdater } = require("electron-updater");

require('v8-compile-cache');
// for nodemon
process.env.IS_DEV ? require('electron-reload') : null;
// disable security warning
process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true';

// Application already running, so we close now
if (!app.requestSingleInstanceLock()) {
  app.quit()
}

app.removeAllListeners('ready');

let mainWindow
function createWindow() {
  // check for uppdate
  autoUpdater.checkForUpdatesAndNotify();

  // Load the previous state with fallback to defaults
  let mainWindowState = windowStateKeeper({
    defaultWidth: 1100,
    defaultHeight: 600
  });
  mainWindow = new BrowserWindow({
    'x': mainWindowState.x,
    'y': mainWindowState.y,
    'width': mainWindowState.width,
    'height': mainWindowState.height,
    minWidth: 1100,
    minHeight: 500,
    backgroundColor: '#121212',
    frame: false,
    icon: __dirname + '../build/icon.png',
    webPreferences: {
      webSecurity: false,
      nodeIntegration: true,
      webviewTag: true
    },
  });
  // Let us register listeners on the window, so we can update the state
  // automatically (the listeners will be removed when the window is closed)
  // and restore the maximized or full screen state
  mainWindowState.manage(mainWindow);

  // http://localhost:3000
  const startUrl = process.env.ELECTRON_START_URL || url.format({
    pathname: path.join(__dirname, '../build/index.html'),
    protocol: 'file:',
    slashes: true,
  });

  mainWindow.loadURL(startUrl);
  // in dev mode
  if (process.env.ELECTRON_START_URL) {
    // open devTools
    mainWindow.webContents.openDevTools({ mode: 'undocked' });
  }
  // in build mode
  if (process.env.IS_DEV) {
    // close menubar
    mainWindow.setMenuBarVisibility(false);
  }

  //clear session + cookies on start to avoid blocking requests
  mainWindow.on('closed', () => {
    mainWindow = null
  });

  mainWindow.webContents.on('new-window', function (e, url) {
    e.preventDefault();
  })

  // Add React Devtool
  if (app.isReady() && process.env.ELECTRON_START_URL) {
    console.log('___INSTALL React Devtool_____')
    BrowserWindow.addDevToolsExtension("./extensions/react")
      .then(name => console.log('INSTALLING', name))
      .catch(err => console.log('Install React-Devtool err', err));
  }
}
app.setAppUserModelId('com.MyMovies.app');
app.on('ready', createWindow);
app.on('window-all-closed', () => {
  app.quit();
})

Расширения Devtron, React и Redux не устанавливаются в окнах браузера. Если кто-нибудь знает обходной путь, хотелось бы услышать.

[electron] Added Extension: React Developer Tools
[electron] Added Extension: Redux DevTools
[electron] [41948:0228/141801.424392:ERROR:CONSOLE(1)] "Uncaught TypeError: Cannot read[electron] [41948:0228/141801.424392:ERROR:CONSOLE(1)] "Uncaught TypeError: Cannot read property 'panels' of undefined", source: chrome-extension://redux-devtools/js/devtools.bundle.js (1)
[electron] [41948:0228/141801.512131:ERROR:CONSOLE(40)] "Uncaught TypeError: Cannot read property 'inspectedWindow' of undefined", source: chrome-extension://react-developer-tools/build/main.js (40)
[electron] Unable to create basic Accelerated OpenGL renderer.
[electron] Unable to create basic Accelerated OpenGL renderer.
[electron] Core Image is now using the software OpenGL renderer. This will be slow.

@ stevenroussey-privicy Мы можем установить расширения response и redux в наших приложениях с помощью пакета electronic-devtools-installer, созданного @MarshallOfSound (спасибо ему 🙏), но devtools просто иногда не появляются с такой же ошибкой .. .

[35280:0324/122320.140:ERROR:CONSOLE(1)] "Uncaught TypeError: Cannot read property 'panels' of undefined", source: chrome-extension://redux-devtools/js/devtools.bundle.js (1)
[35280:0324/122320.233:ERROR:CONSOLE(40)] "Uncaught TypeError: Cannot read property 'inspectedWindow' of undefined", source: chrome-extension://react-developer-tools/build/main.js (40)

Кажется, что вкладки расширений создаются после загрузки расширений в BrowserWindow. Единственная ошибка, которую я улавливаю в бэкэнде, связана с хранилищем Chrome, но, вероятно, не является причиной проблемы.

Exception has occurred: Error
Error: ENOENT: no such file or directory, open "\AppData\Roaming\AppName\Chrome Storage\redux-devtools-sync.json"

Мы открываем инструменты разработки на мероприятии did-frame-finish-load

win.webContents.on('did-frame-finish-load', () => {
  win.webContents.openDevTools();
});

Мы используем тот же метод установки. Устанавливается нормально, но не запускается. Те же ошибки. Даже если я открою инструменты разработчика вручную, это не проблема времени.

Мы используем окно заставки. Насколько я могу судить, он отлично работает в первом созданном окне, но не работает в других окнах. Кто-нибудь еще может проверить?

Может быть связано с https://github.com/electron/electron/issues/23383

Была ли эта страница полезной?
0 / 5 - 0 рейтинги