🏡 Alex
попробуй создать класс окна, который будет отвечать за создание всех окон. в него будешь передавать параметры окна, размеры и тому подобное. и при нажатии кнопки будешь через этот класс обрабатывать создание окон
это понятно. Мне непонятно как само окно создать на клиенте. Если я тупо сделаю require("electron") и в лоб new BrowserWindow(блаблабла) то у меня сборка веб прилки падает и ругается на пакет fs что как бы логично для веба и ангуляра....
🏡 Alex
ну так здесь все в 1 окне)
здесь да, но если юзер ткнет в другой агрегат, для него откроется еще одно такое же окно
Maksim
ангуляр. Электроновский UI
ну, так в чем проблема создать окно? ты же как-то создаешь главное окно?
Александр
нужно включить nodeIntegration:true и contextisolation: false
так работает, но с ними не получается подключить jquery, если комментирую эти строки то jquery инклудится и исполняется...в чем может быть проблема?
Александр
Uncaught ReferenceError: $ is not defined at Send (index.html:142:3) at HTMLAnchorElement.onclick (index.html:73:80)
🏡 Alex
ну, так в чем проблема создать окно? ты же как-то создаешь главное окно?
😃 главное окно, если быть прям совсем точным, создается бэкендом на .net core. И выходит, что единственный способ создать окно - дернуть Ipc и попросить бэк окошко новое показать?
Александр
$.getJSON("http://serv.local/lldp/ajax_bot.php",
Александр
ругается на это
Maksim
😃 главное окно, если быть прям совсем точным, создается бэкендом на .net core. И выходит, что единственный способ создать окно - дернуть Ipc и попросить бэк окошко новое показать?
ничего не понял)) как связан .net и электрон? зачем нужен электрон тогда если .net за окна отвечает, а ангуляр на фронте? электрон какую функцию выполняет?
Nicky
ты можешь сделать из рендер процесса require(‘fs’) и прошарить всю файловую систему например
не можешь. Я ошибся. Ни один нод-модуль в render-процессе не отработает. Пошарить всю файловую невозможно. Во-первых про права не забываем. Во-вторых fs в рендер-процессе не отработает. Можно попытаться воссоздать в прелоуде апи для подтягивания данных из файлов, но не сказать что это полноценный шаринг fs
🏡 Alex
в обсчем, я понял, буду через ipc окна просить.
Григорий
я знаю, что такое электрон. вопрос не в этом был
ты кстати сессии знаешь?) вот тебе точно нужно хорошо подружиться с сессиями, чтобы открывать по несколько окон, в них ты просто инфу закидываешь с фронта и все, ну еще можно создавать какой-то файл а потом в нвоое окно считывать туда свой файл
Григорий
😃 главное окно, если быть прям совсем точным, создается бэкендом на .net core. И выходит, что единственный способ создать окно - дернуть Ipc и попросить бэк окошко новое показать?
ты кстати сессии знаешь?) вот тебе точно нужно хорошо подружиться с сессиями, чтобы открывать по несколько окон, в них ты просто инфу закидываешь с фронта и все, ну еще можно создавать какой-то файл а потом в нвоое окно считывать туда свой файл
Григорий
знаю. с этим пока проблем нет, вроде бы😁😁
тем более каждое окно это новый html, так что думаю не так сложно октрывать инфу в новых окнах, просто запросил открыть новое окно, а потом заливаешь все в html
Григорий
только мне интересно как это делать во фреймворках))) spa
Nicky
nodeIntegration: true добавляет fs в рендер процесс
nodeIntegration true позволяет использовать заранее собранное api на ноде. Если тебе он позволяет использовать fs в рендер-процессе - дерзай. Попробуй в рендер-процесс импортировать fs. Это же просто проверить
Sergey
бред
Renderer processes can be spawned with a full Node.js environment for ease of development. Historically, this used to be the default, but this feature was disabled for security reasons.
Sergey
Так буквально было
Sergey
в те времена, когда я на electron писал
Nicky
Renderer processes can be spawned with a full Node.js environment for ease of development. Historically, this used to be the default, but this feature was disabled for security reasons.
видимо идейно, оттолкнулись от puppeteer. Там тоже рендеры в нод-процессе)
Sergey
видимо идейно, оттолкнулись от puppeteer. Там тоже рендеры в нод-процессе)
Хорошо, что отключили. Я открыл сейчас код старого приложения, и там было много страшных конструкций, чтобы не допустить протекания require — запускали сторонние скрипты в render process
Александр
не знаю почему но с настройками как указал выше jquery не инклюдится, тока так
Александр
<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script> <!-- normal script imports etc --> <script src="scripts/jquery.min.js"></script> <script src="scripts/vendor.js"></script> <!-- Insert this line after script imports --> <script>if (window.module) module = window.module;</script>
Александр
как это работает не пойму, и почему эти штуки (nodeIntegration:true и contextisolation: false) мешают просто напрямую инклудить
Danila
Всем привет! Помогите в testflight залить электрон апп 🙏 Сейчас проблема в том что получаем “not available for testing” Думаем проблема в том что ничего не указано в Build Platfoms Но когда указываем там macosx, то получаем две ошибки -> 1) Asset validation failed Invalid Code Signing Entitlements. Your application bundle's signature contains code signing entitlements that are not supported on macOS. Specifically, key 'CFBundleSupportedPlatforms' in ‘… Login Helper.app/…/Login Helper' is not supported 2) Asset validation failed Invalid Code Signing Entitlements …. key 'CFBundleSupportedPlatforms' in ‘… appName.app/…/‘appName is not supported. Чем может не нравится macosx ? Все не можем первый электрон апп залить((
Александр
Ребят, а я делал программку скачав quick start, но теперь размер простейшей програмки 200мб..многовато, я так понимаю изза избыточных node_modules ..как мне убрать и оставить минимальные модули требующиеся для работы софтинки?
Александр
не качай quick start, а ставь все нужные модули руками)
ну все равно когда делаю npm install --save-dev electron он качает модулей на 200мб
Maksim
ну все равно когда делаю npm install --save-dev electron он качает модулей на 200мб
ну а после билда приложения какой размер получается?
Александр
200
Александр
ну чуть больше
Александр
собираю через npx electron-packager . OIVT --platform=linux
Александр
скорее всего изза того что в зисимостях указан electron он качает все модули?
Rewrite
Всем прив. Кто нибудь юзал workerpool внутри мейн процесса? У меня возникает проблема с тем что он не работает в билде Импортится, но не работает, никаких ошибок не выдает В деве все отлично работает Вот веб настройки окна: webPreferences: { nodeIntegration: true, contextIsolation: false, nodeIntegrationInWorker: true, sandbox: false, }, Если его на проде никак нельзя завести, то что посоветуете юзать? Нативные воркеры? SOLUTION 8.07.2022 Оказывается workerpool это нативный депс (хоть и варнинг об этом не выдавало) и его руками нужно заносить в билд + ребилдить https://electronjs.org/docs/latest/tutorial/using-native-node-modules
Rewrite
а что с нативными воркерами не так?
Просто либы удобнее юзать, там же обертки удобные
ovb
Кто-нибудь встречал опенсорс проект или может сам пробовал, где электрон выступает фронтом для больших питоновских либ (например numpy, pandas и тд)? С реализацией мультизадачности (multiprocess). Интересно какие там подводные камни.
Григорий
Электрон со своими постоянными обновлениями, голой документацией и отсутствием курсов - это сплошные подводные камни
Григорий
Научите скачивать в электрон файлы... Но без сервера
Григорий
Или с сервером, хз
Александр
Электрон жив вообще?
Сергей
Научите скачивать в электрон файлы... Но без сервера
локально?? у ноды есть модуль fs передаешь в него путь и все
Григорий
локально?? у ноды есть модуль fs передаешь в него путь и все
С сервера конечно, локально то понятно, можно и просто файл перетянуть
Григорий
Правда хз, можно ли это сделать безопасно, потому что примеры только с включённым NodeIntegration
Сергей
Если с основного процесса можно через axios стримом сразу
Eugene
А пример есть?
Ты не можешь найти пример как через axios скачать файл, рил?
Eugene
Погугли немного, а если не помогает, то поищи через яндекс(он меня никогда не подводил)
Rewrite
Просто либы удобнее юзать, там же обертки удобные
Просто обидно что просто приходится ctrl+c ctrl+v код из этой либы делать Придется наверное ишью писать, но времени сейчас на это не особо
Rewrite
Пдф либу еще сложнее переносить
S
неа)
почему?
Anonymous
Alex мб это тебе тоже поможет?
Спасибо, но там причина была в другом.
Иван
Всем привет, кто-нибудь сталкивался с проблемой если название приложения на русском, и есть такие буквы как й, ы и тд то проверка подписи на Mac OS не проходит, если их убрать или заменить на те символы которые есть в латинице то все ок, можно ли как-то это обойти?
Иван
Пробовал в Юникоде но тоже не проходит
Rewrite
!report
Иван
Всем привет, кто-нибудь сталкивался с проблемой если название приложения на русском, и есть такие буквы как й, ы и тд то проверка подписи на Mac OS не проходит, если их убрать или заменить на те символы которые есть в латинице то все ок, можно ли как-то это обойти?
В общем, если кто столкнётся с подобной проблемой, я ещё немного изучал эту проблему и выяснил что все символы проходят проверку кроме символов которые выходят за высоту строки например й, è, à и тд, в макоси они отображаются не так как в других операционках, и решение супер простое и тупое) нужно с нужным названием создать папку или файл через Finder и скопировать его и использовать в коде как productName https://github.com/electron/osx-sign/issues/155#issuecomment-343321262
Григорий
всем привет! мне нуэжно сделать кастомну.ю кнопку свернуть приложение знаю есть window.hide() но он живет внутри createWindow может есть что-то подобное для app?
Anonymous
всем привет! мне нуэжно сделать кастомну.ю кнопку свернуть приложение знаю есть window.hide() но он живет внутри createWindow может есть что-то подобное для app?
Что значит "но он живет внутри createWindow" ? ты можешь сохранить window как глобальную переменную и вызвать на ней .hide
Anonymous
Из рендерера ты можешь получить доступ к remote и окну и тоже вызвать .hide: const { BrowserWindow } = require('@electron/remote') const window = remote.BrowserWindow.getFocusedWindow(); window.hide()
Григорий