ALΣX
потом обращаешься к global.win для управления данным окном, пример: global.win.on('closed', () => { global.win = null; if (os.platform() === 'darwin') app.dock.hide(); });
Григорий
global.win = new BrowserWindow(options);
то есть вы экспортируете окно с параметрами, а потом где нужно просто импортируете?
ALΣX
то есть вы экспортируете окно с параметрами, а потом где нужно просто импортируете?
ничего не нужно экспортировать, импортировать - global.win будет доступно в любом месте ноды
ALΣX
попробуй просто записать что-то в global и получить значение, посмотри, как оно работает
ALΣX
или посмотри в доке ноды
Григорий
или посмотри в доке ноды
та вот уже начал читать)) вообще интересная фича))
Григорий
не советую)
а в чем проблема?
Sergey spbsite
а в чем проблема?
https://nodejs.org/dist/latest-v17.x/docs/api/async_context.html
Григорий
https://nodejs.org/dist/latest-v17.x/docs/api/async_context.html
ну тут описано асинхронный процесс
Sergey spbsite
ну тут описано асинхронный процесс
https://progi.pro/pochemu-ne-sleduet-ispolzovat-slishkom-mnogo-peremennih-global-v-nodejs-2274058
Sergey spbsite
https://nodejsdev.ru/guide/global/
Sergey spbsite
следуйте тогда правилам)
Sergey spbsite
"Однако по возможности все таки рекомендуется избегать определения и использования глобальных переменных, и преимущественно ориентироваться на создание переменных, инкапсулированных в рамках отдельных модулей. " в саммом низу статьи
Sergey spbsite
поэтому и посоветовал не использовать)
ALΣX
Для удобства использования? 🤷‍♂️ У нас там всего две переменные - store и win, пока никаких побочных эффектов от этого замечено не было
Sergey
Можете погуглить что с ними не так
ALΣX
ну, все-все, полно) Почитаю, если будет время, предложу команде исправить) Давайте не устраивать срач, пожалуйста)
Григорий
зачем глобальные переменные вводить вообще?
а как бы ты сделал доступность главного окна из любого файла?
CybernatiC
Уважаемые доброго времени подскажите пожалуйста возможно ли сделать KIOSK на electronjs ? чтобы прям автозапуск с системой был и не было возможности вырубать приложение кроме как скажем ввода пароля (или спец комбинации)
CybernatiC
а как же диспетчер задач?
я вот думал делать гостевой пользователь в системе у которого не будет диспетчера
CybernatiC
да и в киоске только тачскрин
CybernatiC
клавиатура доступна только при удаленном подключении к примеру anydesk
Григорий
я вот думал делать гостевой пользователь в системе у которого не будет диспетчера
автозапуск еще не умею делать, но можно к примеру спрятать при запуске иконку в трее и оттуда только закрывать и больше нигде такой возможности не давать
Григорий
и по идее даже перехватить альт+Ф4
Григорий
а еще Ctrl+W как в браузере работает)))) а нет, если убрать меню то не работает)))
CybernatiC
автозапуск еще не умею делать, но можно к примеру спрятать при запуске иконку в трее и оттуда только закрывать и больше нигде такой возможности не давать
да автозапуск скорее всего можно даже руками ставить в настройках виндовса Проблема в другом Есть ли такие извращенцы как я которые уже делали (я хочу сделать) киоск на электроне
Григорий
о боги))
Григорий
CybernatiC
нет там винда
Григорий
линух вроде по меньше жрет проц
CybernatiC
https://www.electronjs.org/docs/latest/api/app#appsetloginitemsettingssettings-macos-windows
Roman
Здравствуйте. Делаю связку из electron + react для киоска. И в том и в том новичок. Есть требование отображаемые медиа-файлы хранить в отдельной папке, возможно вообще примонтированной, и обращаться к ним по пути. Вопрос в том, как правильнее всего будет обращаться к локальным файлам?
Roman
Не, мне нужен electron и отдельная папка с медиа 🌚
Григорий
Не, мне нужен electron и отдельная папка с медиа 🌚
чета типа хранилища картинок? типа отдельного сервера только не сервер?
Григорий
Импорт из нужного файла, DI
то есть поселить объект окна где-то в файле? ну а как на счет сессий?
Григорий
Что сессии
ну вроде как по ним можно искать
Sergey
ну вроде как по ним можно искать
Я не оч понимаю о чем речь
Григорий
Я не оч понимаю о чем речь
ну каждому окну можно присвоить сессию
Григорий
бд?
Григорий
у меня электрон с помощью nodejs проверяет файлы на наличие и сравнивает по md5 а потом возвращает ответ, врятли тут поможет бд
Yura
Ты фронтендер типа?)
Yura
А в чем суть вопроса?
Григорий
я тоже не понял при чем бд к вопросу - как сделать объект главного окна общедоступным?
Григорий
ну это уже ближе к теме) мне помогли пока что сделать файл в который запихунькаю объект окна и потом вызываю где нужно, но я знаю что есть сессии и по ним вроде как-то можно дергать окна, правда можно еще дергать окна через BrowserWindow.getAllWindows()[0] чтобы получить первое окно
Roman
Хотя, скорее, плеер медиа-файлов.
Rewrite
Всем прив. Почему electron-rebuild использует так мало разрабов, ведь это literally единственный пакет который билдит нативные модули?
Дмитрий
Скажите, пожалуйста, хочу локально использовать базу SQLite. В приложении я ее создам, создам таблицы, но потом при повторном запуске нужно сделать проверку на наличие таблиц? или сразу базу с таблицами делать и в приложении только подключение?
Pavel
Многие библиотеки для миграций SQL имеют ряд оптимизаций (fast path) для выяснений, нужны ли миграции
Дмитрий
Многие библиотеки для миграций SQL имеют ряд оптимизаций (fast path) для выяснений, нужны ли миграции
Спасибо. Прочитал про миграции. Я поставил sqlite3, но в документации не нашёл про миграции. Правильно я понимаю, что для миграций нужно использовать что то ещё? Нашёл библиотеку sqlite дополнительно к sqlite3, которая работает с миграциями. Либо может подскажите что лучше использовать?
Arsen
Думаю лучше при старте создавать последнюю версию схемы, сохранить где-нибудь активную версию схемы и если в будущем будут изменения схемы с большим номером, накатывать их. Соответственно, если у вас новые установки, им ставится последняя версия схемы, если старые, при запуске накатываются миграции.
Pavel
Думаю лучше при старте создавать последнюю версию схемы, сохранить где-нибудь активную версию схемы и если в будущем будут изменения схемы с большим номером, накатывать их. Соответственно, если у вас новые установки, им ставится последняя версия схемы, если старые, при запуске накатываются миграции.
Именно это и делают почти все библиотеки миграций, сохраняют версию миграции в БД, и сопутствующие данные, хеш сумму, дату миграции, ну и прочее Если делать в ручную миграции (тупа запускать один за другим SQL), то да, такое придется учитывать самому и хранить версию в БД
Дмитрий
Да, используются другие инструменты для миграций
А подскажите какие инструменты использовать?
Дмитрий
Нашёл knex.js. большая документация и про миграции много. Правильно я нашёл? Или нужно что то другое?
Pavel
Я не веб разработчик, но нашел для ноды такое https://sequelize.org/docs/v6/other-topics/migrations/
Дмитрий
Да как раз на него тоже зашел
Дмитрий
Теперь немного понял, сейчас буду разбираться, огромное спасибо за наводки
Дмитрий
Очень удобно и запросы делать
Michael
Всем привет! С конца сентября стартую в новой роли разработку на электроне) Рад, что в телеге есть русскоговорящее коммьюнити!
maxim
на этом твоя радость и закончится))
ну чего уж ты))) ты вот теперь знаешь, что папочка открывается не из child_process ))) если бы не сообщество не знал бы)
Григорий
ну чего уж ты))) ты вот теперь знаешь, что папочка открывается не из child_process ))) если бы не сообщество не знал бы)
ой это точно)) ну по крайней мере теперь приблизительно знаю в чем разница между ними)
ALΣX
Йоу, вопрос. Были у кого-то проблемы с отображением уведомлений (использую Electron API) из мейн процесса? Когда создаю инстанс уведомления и пробую его показать используя метод show, ничего не происходит (вин 10)
maxim
Йоу, вопрос. Были у кого-то проблемы с отображением уведомлений (использую Electron API) из мейн процесса? Когда создаю инстанс уведомления и пробую его показать используя метод show, ничего не происходит (вин 10)
может там заблокировал где? не знаю как в винде а в маке если приложению в первый раз запретить - то показываться не будут пока в настройках не разрешишь
ALΣX
new Notification({title: 'text', body: "text"}).show(); в смысле так не работает? может условие не доходит?
Нет, в том и проблема. Пробовал уже просто через Fiddle тестировать, тоже ничего.