Вы пытаетесь выполнить этот код в электронном BrowserWindow?
Если да, проверьте, не установлено ли nodeIntegration
на false
при запуске BrowserWindow
.
mainWindow = new BrowserWindow({
minWidth: 370,
minHeight: 520,
webPreferences: {
nodeIntegration: true,
},
});
nodeIntegration
на самом деле true
по умолчанию, так что вы также можете удалить эту строку - я просто пытаюсь сделать ее супер очевидной;)
Пока nodeIntegration
равен true
, вы можете запускать любой код nodeJS в процессе рендеринга электронов.
Это выходит за рамки вашего первоначального вопроса и немного более продвинуто, но если вы не хотите включать это, поскольку оно сопровождается многочисленными проблемами безопасности , вы можете просто предоставить определенные методы nodeJS для Процесс рендеринга. Вы можете сделать это с помощью скрипта предварительной загрузки.
mainWindow = new BrowserWindow({
...
webPreferences: {
nodeIntegration: false,
preload: path.join(__dirname, 'preload.js') // here you can re-expose certain methods such as `require`
},
});
preload String (необязательно) - указывает скрипт, который будет загружен до запуска других скриптов на странице. Этот скрипт всегда будет иметь доступ к API узлов независимо от того, включена ли интеграция узлов. Значение должно быть абсолютным путем к файлу скрипта. Когда интеграция узлов отключена, сценарий предварительной загрузки может повторно ввести глобальные символы Node обратно в глобальную область.
Больше информации можно найти здесь:
https://electronjs.org/docs/api/process#event-loaded