Андрей
ну это исключительно про билд, нужно работоспособность проверять конечно на виртуалке, что бы не делать сборки постоянно, можно общие папки настроить и в виртуалке через терминал запускать проект
🅰️nimeCoder
Ну в большинстве случаев все работает, но да
Unknown
а то мне через полгода после диплома сегодня написали что на 7 винде нихера не работает
Андрей
на ру линуксы собирал?))
🅰️nimeCoder
ещё и разрядность разную поднимать))
Сейчас наверное под х32 не имеет смысла
Unknown
а у меня электрон 23 был
🅰️nimeCoder
Мёртвая система
Unknown
в моём случае интернет в кабинете только на смартфонах студентов и преподов
Unknown
и системы старые тоже
Unknown
а у меня электрон 23 был
слава богу что всё починилось откатом на 22 даже без фиксов)
_dimon_chick_
Вопрос можно ли блоку сверху задать cursor не классический ? (кнопка по средине что бы проверить выдае ли css стили для курсора) вот css верхнего компонента .main { position: absolute; top: 0; width: 100%; height: 1.75rem; background: transparent; border: 1px red solid; -webkit-app-region: drag; cursor: grab; z-index: 1; }
_dimon_chick_
// ? styles import s from './DraggableTopBar.module.css' export default function DraggableTopBar(): JSX.Element { return <header className={s.main}></header> }
Mike
Добрый вечер, не подскажите как примерно можно реализовать стрим логов на рендерер. Чтобы была возможность не только на события рендерер обновлять, но и смотреть исторические данные (например отматывать на вчера). Делать ли это через БД или как то через fs.readFile лучше? Может есть где туториал с похожим функционалом?
Constantin
Приветствую! Есть такая проблема. Надо создать логику которая создает новые данные или инкременитрует count в старых ранее созданных данных. Проблема в том что на скрине на каждый экшн вызывается функция. Если один и тот же экшн вызывается больше 1 раза, то => 1 экшн вызывает функцию. Она создает новые данные. => Все последующие экшины инкрементруют старые а не создают новые данные. Как понимаю проблема заключается в том что на каждый экшин вызывается функция и эти все вызовы выполняются паралельно и происходит *гонка событий* и следовательно данные в ДБ записываются не правильно.
nikolay
если нужно последовательно смотрите в сторону for await
nikolay
в нём можно await использовать
nikolay
либо можно что то с очередями мудрить. в гипотетическом tress например
nikolay
да наверно лучше очередями в один поток
Constantin
да наверно лучше очередями в один поток
вы про это, for await (const num of asyncIterable)
Constantin
?
nikolay
да
Constantin
Попробую, благодарю 👍💪
nikolay
вы про это, for await (const num of asyncIterable)
если вы имели конкретную строчку про очереди, то нет. не про это )) https://www.npmjs.com/package/tress позволяет очереди делать в 1 или несколько потоков
Constantin
Благодарю
Anonym Squad
Привет всем в общем, вдруг у кого тоже как и мне, придет в голову, в электрон запихнуть nestjs и react. То вот, помучался немного и вроде как получилось. https://gitlab.com/moshkinura/electron-nestjs-reactjs-boilerplate
Степан
Всем привет, снова я с геолокацией. Почему вызов navigator.geolocation (вызываю в renderer процессе(читай фронденд)) может возвращать error 403?
Степан
потому что у тебя не добавлен гугл апи кей
Тогда почему на клиент-версии приложения (в браузере) все ок?
No
Тогда почему на клиент-версии приложения (в браузере) все ок?
потому что каждый браузер это делает под капотом по-разному
No
хром - через свое же апи
Степан
Справедливо
_dimon_chick_
На маке не подключается картинка, в доке висит дефолтная, как исправить ? Саму иконку подключал в BrowserWindow
No
для того чтобы в док установить, то нужно ее билдере положить
_dimon_chick_
для того чтобы в док установить, то нужно ее билдере положить
Когда просто run dev делаю, не как не поменять ?
No
нет
_dimon_chick_
Попытался собрать билд
_dimon_chick_
Начал ругаться, на картинку, чат подсказал что надо конвертировать в icns -> сделал в package.json для билда сделал пункт, указал путь до картинки все равно ошибка
Сергей
подскажете как отписаться от ивентов в рендере? Компоненты подписку стакают( В прелоаде сделал 2 функции: подписка и отписка, но отписка что-то не хочет работать
No
Ты же можешь просто юзать ipcrendere.send/invoke
Сергей
у меня есть событие, которое приходит от main процесса в рендер. В рендере есть разное количество компонентов, которые подписываются на это событие. Но, когда компонент удаляется, то отписка не происходит и в консоли мне выдает предупреждение
Сергей
делал примерно по инструкции из офф доки
No
ты пытаешь удалить onGetSettingsCallback, а вместое этого ты должен передать туда тот же самый callback что передаешь в onGetSettingsCallback
Сергей
ты пытаешь удалить onGetSettingsCallback, а вместое этого ты должен передать туда тот же самый callback что передаешь в onGetSettingsCallback
с отпиской вроде разобрался. Сделал в прелоаде так. В рендере в useEffect вызываю потом в return колбэк.
Сергей
Созрел новый вопрос, как в electron-react-boilerplate создать новое окно. А если быть точнее, где прописать новые render и preload файлы?
dip
I have an electron js project i want to hide source code when it's build installer exe. mean inside my output folder it's expose my app folder and source codes
ALΣX
Созрел новый вопрос, как в electron-react-boilerplate создать новое окно. А если быть точнее, где прописать новые render и preload файлы?
В любом месте мейн процесса, после того, как приложение завершило инициализацю (готово)
Сергей
В любом месте мейн процесса, после того, как приложение завершило инициализацю (готово)
слишком просто) Там оказалось сложнее, через настройку веб пака
Nikolay Dimitriev
У меня ангуляр приложение, которое собираю в exe с помощью электрона. Скажем myapp.exe. Настроил обновление с использованием squirrel. Разместил на своём хостинге https://myserver/download/latest/ необходимые файлы для автообновления. Как я понял это: myapp-2.0.0-full.nupkg, RELEASE (без расширения) Setup.exe Они все автоматически создаются при сборке. Если открыть файл RELEASE (без расширения) через текстовый редактор, то там вот примерно такой текст: “D120EF45A371551596E5B0628722AD6368BA8391 myapp-2.0.0-full.nupkg 448403423” Всё работает отлично. Раз в 30 секунд autoUpdater.checkForUpdates(); проверяет по этому урлу (https://myserver/download/latest/) наличие файла RELEASE (без расширения), и если он есть - запускает процесс автообновления. Но я решил настроить для автообновлений electron-release-server. Поменял путь для проверки обновления с https://myserver/download/latest/ на http://localhost/download/latest/, так как пока для тестов собрался брать обновления из electron-release-server. Настроил бд, запустил сервер, перешёл на http://localhost/admin/ и создал там Flavor с именем /download/latest/ Загрузил в этот Flavor файлы myapp-2.0.0-full.nupkg и Setup.exe. Но вот RELEASE (без расширения) никак не хочет загружаться. А, как я понимаю, для старта автообновления нужен именно он. Когда я нажимаю на "выберите файл" и перехожу в папку на компьютере, где у меня лежит нужный релиз, файл RELEASE вообще не отображается, так как доступны для загрузки файлы только формата .dmg, .zip, .deb, .exe, .nupkg, .blockmap. Я меняю на "все файлы", то тогда файл RELEASE становится виден, но при попытке его загрузить пишет вот такую ошибку "Unable to Create Asset An Unkown Error Occurred. Пробовал загружать вместо RELEASE (без расширения) RELEASE.txt, RELEASE.json, но это не работает. Судя по логам, ожидается именно RELEASES без всякого расширения: [16.02.24 12:02:32] warn: IEnableLogger: Failed to download url: http://localhost/download/latest/RELEASES?id=myapp&localVersion=2.0.0&arch=amd64: System.Net.WebException: Удаленный сервер возвратил ошибку: (404) Не найден. в System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) Подскажите, пожалуйста, куда копать?
No
У меня ангуляр приложение, которое собираю в exe с помощью электрона. Скажем myapp.exe. Настроил обновление с использованием squirrel. Разместил на своём хостинге https://myserver/download/latest/ необходимые файлы для автообновления. Как я понял это: myapp-2.0.0-full.nupkg, RELEASE (без расширения) Setup.exe Они все автоматически создаются при сборке. Если открыть файл RELEASE (без расширения) через текстовый редактор, то там вот примерно такой текст: “D120EF45A371551596E5B0628722AD6368BA8391 myapp-2.0.0-full.nupkg 448403423” Всё работает отлично. Раз в 30 секунд autoUpdater.checkForUpdates(); проверяет по этому урлу (https://myserver/download/latest/) наличие файла RELEASE (без расширения), и если он есть - запускает процесс автообновления. Но я решил настроить для автообновлений electron-release-server. Поменял путь для проверки обновления с https://myserver/download/latest/ на http://localhost/download/latest/, так как пока для тестов собрался брать обновления из electron-release-server. Настроил бд, запустил сервер, перешёл на http://localhost/admin/ и создал там Flavor с именем /download/latest/ Загрузил в этот Flavor файлы myapp-2.0.0-full.nupkg и Setup.exe. Но вот RELEASE (без расширения) никак не хочет загружаться. А, как я понимаю, для старта автообновления нужен именно он. Когда я нажимаю на "выберите файл" и перехожу в папку на компьютере, где у меня лежит нужный релиз, файл RELEASE вообще не отображается, так как доступны для загрузки файлы только формата .dmg, .zip, .deb, .exe, .nupkg, .blockmap. Я меняю на "все файлы", то тогда файл RELEASE становится виден, но при попытке его загрузить пишет вот такую ошибку "Unable to Create Asset An Unkown Error Occurred. Пробовал загружать вместо RELEASE (без расширения) RELEASE.txt, RELEASE.json, но это не работает. Судя по логам, ожидается именно RELEASES без всякого расширения: [16.02.24 12:02:32] warn: IEnableLogger: Failed to download url: http://localhost/download/latest/RELEASES?id=myapp&localVersion=2.0.0&arch=amd64: System.Net.WebException: Удаленный сервер возвратил ошибку: (404) Не найден. в System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) Подскажите, пожалуйста, куда копать?
в сторону кода electron-release-server
Nikolay Dimitriev
в сторону кода electron-release-server
Да, я пробовал. Закомментировал вот эту часть: uploadedFile.filename === 'RELEASES' (вообще непонятно зачем она. Заменил filetype: fileExt, на fileExt || '' чтобы fileExt мог быть в том числе и пустым. Но всё равно загрузить без расширения файл RELEASE не удаётся 🥲 req.file('file').upload(sails.config.files, function whenDone(err, uploadedFiles) { if (err) { return res.negotiate(err); } // If an unexpected number of files were uploaded, respond with an // error. if (uploadedFiles.length !== 1) { return res.badRequest('No file was uploaded'); } var uploadedFile = uploadedFiles[0]; console.log('uploadedFile.filename', uploadedFile.filename); console.log('uploadedFile', uploadedFile.filename); // if (uploadedFile.filename === 'RELEASES') { // return res.badRequest( // 'The RELEASES file should not be uploaded since the release server will generate at request time'); // } var fileExt = path.extname(uploadedFile.filename); console.log('fileExt', fileExt); sails.log.debug('Creating asset with name', data.name || uploadedFile.filename); var hashPromise; if (fileExt === '.nupkg') { // Calculate the hash of the file, as it is necessary for windows // files hashPromise = AssetService.getHash(uploadedFile.fd); } else if (fileExt === '.exe' || fileExt === '.zip') { hashPromise = AssetService.getHash( uploadedFile.fd, "sha512", "base64" ); } else { hashPromise = Promise.resolve(''); } hashPromise .then(function(fileHash) { var newAsset = _.merge({ name: uploadedFile.filename, hash: fileHash, filetype: fileExt || '', fd: uploadedFile.fd, size: uploadedFile.size }, data); // Due to an API change in Sails/Waterline, the primary key values must be specified directly.= newAsset.version = newAsset.version.id; const delta = newAsset.name && newAsset.name.toLowerCase().includes('-delta') ? 'delta_' : ''; newAsset.id = `${newAsset.version}_${newAsset.platform}_${delta}${newAsset.filetype.replace(/\./g, '')}`; // Create new instance of model using data from params Asset .create(newAsset) .exec(function created(err, newInstance) { // Differentiate between waterline-originated validation errors // and serious underlying issues. Respond with badRequest if a // validation error is encountered, w/ validation info. if (err) return res.negotiate(err); // If we have the pubsub hook, use the model class's publish // method to notify all subscribers about the created item. if (req._sails.hooks.pubsub) { if (req.isSocket) { Asset.subscribe(req, newInstance); Asset.introduce(newInstance); } Asset.publish([newInstance.id], { verb: 'created', id: newInstance.id, data: newInstance }, !req.options.mirror && req); } // Send JSONP-friendly response if it's supported res.ok(newInstance); }); }) .catch(res.negotiate); });
Rav
Всем привет. Подскажите пж, почему в проекте есть несколько страниц html на которые маунтится vue приложения через js файлы, но у меня ругается только на один файл с этой ошибкой, хотя в других идентично все подключается и работает ? Все они правда крутятся в одном окне электрона, а вот файл в котором эта ошибка он в дочернем окне открывается
Mike
Доброго времени. Подскажите как вылечить ошибку. Все работало прекрасно в предыдущие дни и сегодня а потом внезапно стало App threw an error during load Error [ERR_REQUIRE_ESM]: require() of ES Module D:\github\bracelet\node_modules\node-crc\lib\lib.js from D:\github\bracelet\out\main\index.js not supported. Instead change the require of lib.js in D:\github\bracelet\out\main\index.js to a dynamic import() which is available in all CommonJS modules. at f._load (node:electron/js2c/asar_bundle:2:13377) at Object.<anonymous> (D:\github\bracelet\out\main\index.js:10:17) at f._load (node:electron/js2c/asar_bundle:2:13377) at loadApplicationPackage (D:\github\bracelet\node_modules\electron\dist\resources\default_app.asar\main.js:121:16) at Object.<anonymous> (D:\github\bracelet\node_modules\electron\dist\resources\default_app.asar\main.js:233:9) at f._load (node:electron/js2c/asar_bundle:2:13377) at node:electron/js2c/browser_init:2:123937 at node:electron/js2c/browser_init:2:124140 at node:electron/js2c/browser_init:2:124144 at f._load (node:electron/js2c/asar_bundle:2:13377) Конфигов не менял. Если зависимость на "node-crc" убрать из файлов, то запускается, но раньше работало и не было проблем. как вылечить. Знает кто?
David
Доброго времени. Подскажите как вылечить ошибку. Все работало прекрасно в предыдущие дни и сегодня а потом внезапно стало App threw an error during load Error [ERR_REQUIRE_ESM]: require() of ES Module D:\github\bracelet\node_modules\node-crc\lib\lib.js from D:\github\bracelet\out\main\index.js not supported. Instead change the require of lib.js in D:\github\bracelet\out\main\index.js to a dynamic import() which is available in all CommonJS modules. at f._load (node:electron/js2c/asar_bundle:2:13377) at Object.<anonymous> (D:\github\bracelet\out\main\index.js:10:17) at f._load (node:electron/js2c/asar_bundle:2:13377) at loadApplicationPackage (D:\github\bracelet\node_modules\electron\dist\resources\default_app.asar\main.js:121:16) at Object.<anonymous> (D:\github\bracelet\node_modules\electron\dist\resources\default_app.asar\main.js:233:9) at f._load (node:electron/js2c/asar_bundle:2:13377) at node:electron/js2c/browser_init:2:123937 at node:electron/js2c/browser_init:2:124140 at node:electron/js2c/browser_init:2:124144 at f._load (node:electron/js2c/asar_bundle:2:13377) Конфигов не менял. Если зависимость на "node-crc" убрать из файлов, то запускается, но раньше работало и не было проблем. как вылечить. Знает кто?
А пакеты обновлял?
Сергей
Можете помочь с вебпаком? Подключил в одном js bootstrap библиотеку и при сборке мне теперь ругается
Mike
А пакеты обновлял?
да я удалил просто эту зависимость и решилась проблема
Сергей
Если этот импорт убираю, то все ок
David
да я удалил просто эту зависимость и решилась проблема
А эта зависимость была вами установлена или peerDependency?
David
Mike
А эта зависимость была вами установлена или peerDependency?
electron-vite использую. node-crc сам ставил уже для приложения. Просто удивило что внезапно перестало, но видимо это норм
David
electron-vite использую. node-crc сам ставил уже для приложения. Просто удивило что внезапно перестало, но видимо это норм
Может просто делали update и обновились версии пакетов, которые не поддерживают больше
Rav
Всем привет Приложение на electron+vue3+vite Два окна, одно основное, второе чисто для одного компонента vue как информационное. Навигация сделана с помощью vue router Подскажите пж, как сделать, чтобы на втором окне компонент нормально отображался? Пытаюсь в дев режиме отобразить тупо этот роут, но не отображается. Если в основном окне его вывести, то отображается. Что делаю не так?
🅰️nimeCoder
Не знаю что ты там делаешь, но у тебя там должен быть отдельный preload, и весь остальной набор с независимым vue, оно же и собирается отдельно
🅰️nimeCoder
Что вообще значит "для отдельного компонента" отдельного от чего?
Rav
Что вообще значит "для отдельного компонента" отдельного от чего?
Ну я к тому, что этот компонент никак с другими не взаимодействует и не меняется на другой роут в этом окне Всегда одно должно быть там Это никак не сделать получается кроме как разделить на независимый vue, preload и т.д.?
Rav
Ну по сути у тебя у тебя между окнами ничего общего нет ?
По сути нет Я думал можно во второе окно тупо этот роут вывести как-нибудь и все Пытался грузить через другой html файл как, но там из-за точки входа походу он начинал ругаться на vue Самое странное, что в какой-то момент в дев режиме работало в таком виде: win.loadURL(‘localhost/myroute’) Потом я отвлёкся от этого окна на основное, вернулся к работе над ним и теперь и так не работает и ошибок никаких нет в консоли
_dimon_chick_
Если самое по себе окно не привязано к основному, то логичнее будет сделать отдельный прелоад и окно, как уже выше сказали выше, из минусов у тебя будет оно грузиться чуть-чуть дольше, но не думаю что прям сильно 1 компонент нагрузит тебе приложение, а с точки зрения архитектуры так будет правильнее
🅰️nimeCoder
А если ему родительским окном прописать основное окно с его прелоадером, это никак не поможет?
Если нужно взаимодействие окон - нужен ipc или общий ws сервер через main