Я пытаюсь использовать custom-electron-titlebar: https://github.com/AlexTorresSk/custom-electron-titlebar#readme . Когда я запускаю процесс рендеринга:
import customTitlebar from 'custom-electron-titlebar';
_getTitleBar() {
return new customTitlebar.Titlebar({
backgroundColor: customTitlebar.Color.fromHex('#333'),
});
}
Я получаю сообщение об ошибке require is not defined
Когда я перемещаю все в основном процессе main.ts
:
import customTitlebar from 'custom-electron-titlebar'
ipcMain.on("customTitlebar-from-A", (event, args) => {
let titlebar = new customTitlebar.Titlebar({
backgroundColor: customTitlebar.Color.fromHex('#333'),
});
WindowTypeA.webContents.send("customTitlebar-to-A", { titlebar });
});
Я получаю сообщение об ошибке: navigator is not defined
.
При поиске я нашел этот ответ: ElectronJS ReferenceError: навигатор не определен: это может не выполняться в основном процессе. Основной процесс предназначен для управления процессом визуализации. В основном процессе Electron не будет никакого навигатора. А навигатор - это свойство браузера. Средство визуализации отвечает за отображение кода в browserWindow. Таким образом, вы можете получить доступ к навигатору браузера в рендерере, а не в главном. Поэтому, пожалуйста, переместите это в свой рендерер, где вы хотите настроить строку заголовка.
Но как сохранить customTitlebar в процессе рендеринга, если я получаю ошибку require is not defined
?
WindowTypeA = new BrowserWindow({
width: 800,
height: 600,
titleBarStyle: "hidden",
webPreferences: {
nodeIntegration: false,
enableRemoteModule: false,
contextIsolation: true,
nodeIntegrationInWorker: false,
nodeIntegrationInSubFrames: false,
webSecurity: true,
webviewTag: false,
preload: path.join(__dirname, "./preload/preload.js"), /* eng-disable PRELOAD_JS_CHECK */
}
Из соображений безопасности я ДОЛЖЕН оставить nodeIntegration:false
и contextIsolation: true
- Электрон: v 12.0.0
- узел: v 14.5.0
- ОС: рабочий стол Ubuntu 18.04
Как решить проблему?