необходимо настроить предзагрузку (preload) скриптов. Из-за того, что байт-код зашифрован и файлы имеют расширение jsc, рендерный слой не может загрузить соответствующие файлы js.
Для обеспечения безопасности включаем изоляцию контекста и отключаем интеграцию с модулями Node.js, а также включаем предзагрузку (preload) скриптов. Из-за шифрования байт-кода файлы имеют расширение .jsc, что приводит к проблемам с загрузкой соответствующих файлов .js в рендеринге.
// Основное окно
config.windowsOption = {
title: appConfig.company,
width: 1400,
height: 900,
minWidth: 1400,
minHeight: 900,
webPreferences: {
// webSecurity: false, // Проблемы с кросс-доменными запросами -> раскомментировать
contextIsolation: true, // true -> требуется bridge.js (contextBridge)
nodeIntegration: false, // Отключение интеграции с модулями Node.js
sandbox: true, // Включение режима песочницы
preload: path.join(getPreloadBridgePath(), 'main.js')
},
frame: true,
show: false,
icon: path.join(appInfo.home, 'public', 'images', 'logo-32.png')
}
Путь к предзагрузочному скрипту:
**Вопрос: есть ли способ исключить определенные файлы из шифрования с помощью конфигурации encrypt, или есть другие решения?**В настоящее время конфигурация encrypt.files
включает !electron/preload/bridge/*.(js|json)
после шифрования и сборки, папка electron/preload/bridge
отсутствует.
Мои текущие решения:
encrypt.files
files: [
'!electron/preload/bridge/*.(js|json)'
],
extraResources
в builder.json
"extraResources": [
{
"from": "electron/preload/bridge/",
"to": "preload/bridge/"
}
],
function getPreloadBridgePath() {
const isDebug = getIsDebug()
if (isDebug) {
return path.join(electronApp.getAppPath(), 'electron', 'preload', 'bridge')
} else {
return path.join(electronApp.getAppPath(), '..', 'preload', 'bridge')
}
}