@electron_ru

Страница 20 из 177
Sheldhur
30.03.2017
14:59:49
import {remote} from 'electron'; const electronWorkers = remote.require('electron-workers')(({ pathToElectron: 'C:\\Users\\Sheldhur\\WebstormProjects\\Vector\\node_modules\\electron\\dist\\electron.exe', connectionMode: 'ipc', pathToScript: `C:\\Users\\Sheldhur\\WebstormProjects\\Vector\\app\\worker.js`, timeout: 5000, }));

примерно так

Сергей
30.03.2017
15:00:30
захардкодил?

Sheldhur
30.03.2017
15:00:31
потом по человечески сделаю, главное, что работает

Google
Сергей
30.03.2017
15:00:37
хех))

ну так впринципе и должно быть

Electron.js releases
31.03.2017
20:56:11
electron v1.6.5 beta https://github.com/electron/electron/releases/tag/v1.6.5 Bug Fixes Fixed an issue where Electron could not use the version of ffmpeg that does not include proprietary codecs. #9057 (https://github.com/electron/electron/pull/9057) Fixed an issue where drag and drop events did not work properly across tags. #9037 (https://github.com/electron/electron/pull/9037) Fixed an issue where the geolocation API could hang the UI thread and crash the renderer process. #8923 (https://github.com/electron/electron/pull/8923) Fixed an uncaught error when making a request via the net module and the response's content encoding was not supported. #9001 (https://github.com/electron/electron/pull/9001) Fixed a crash that would occur on certain page navigations. #9043 (https://github.com/electron/electron/pull/9043) Fixed an issue where net module requests did not support non-string header values. #9062 (https://github.com/electron/electron/pull/9062) Windows Fixed an issue where escaped & characters could not be used in top-level menu item labels. #8984 (https://github.com/electron/electron/pull/8984) API Changes The crashReporter module is now available in sandboxed renderer processes. #8956 (https://github.com/electron/electron/pull/8956) Added support for controlling how redirects are handled in the net module. #9007 (https://github.com/electron/electron/pull/9007) Added editMenu and windowMenu menu item roles that include the standard OS submenu items. #8880 (https://github.com/electron/electron/pull/8880) Added support for a tabbingIdentifier option to the BrowserWindow constructor that enables groupable native tabs on macOS 10.12+. #9052 (https://github.com/electron/electron/pull/9052) Windows The uploadToServer option to crashReporter.start is now supported. #9053 (https://github.com/electron/electron/pull/9053)

Sheldhur
01.04.2017
06:13:45
как заспавнить дочерний процесс электрона с бабелем? а то меня чёт не радует переписывать модели на es2015

Sergey
01.04.2017
12:25:44
Spawn("electron", [”arg1", ”arg2"], {cwd:"yourdir"})

Sheldhur
01.04.2017
14:54:49
не хочет так

Sergey
01.04.2017
14:55:16
Покажи как делаешь

Код

Sheldhur
01.04.2017
14:55:32
сек

Код
захардкодил для проверки let spawn = remote.require('child_process').spawn; let child = spawn(process.execPath, ['./app/worker.js', '-r', 'babel-register', '-r', 'babel-register'], { stdio: ['pipe', 'pipe', 'pipe', 'ipc'], cwd: 'C:\\Users\\Sheldhur\\WebstormProjects\\Vector\\' });

в ProcessExplorer и без cwd выставляет директорию с проектом

в cmd выходит \WebstormProjects\Vector\node_modules\electron\dist\electron.exe ./app/worker.js -r babel-register -r babel-register

Sergey
01.04.2017
15:00:16
Exe

Google
Sheldhur
01.04.2017
15:00:34
убрать?

чёт сомневаюсь, что поможет

Sergey
01.04.2017
15:01:01
Spawn это процесс ноды, а .exe это не нода

Sheldhur
01.04.2017
15:01:19
ну процесс то спавнит

всё работает

но бабеля нет

тогда уж так, наверно \WebstormProjects\Vector\node_modules\.bin\electron

Sergey
01.04.2017
15:02:12
Child_process.exec() для .exe

Sheldhur
01.04.2017
15:02:31
гм...

а эта срань после сборки в пакет вообще работать будет?

или придется весь node_modules за собой тащить?

Sergey
01.04.2017
15:03:42
Хз, я вообще сейчас в кинотеатре) так что посмотри доку ноды, и по гугли

Sheldhur
01.04.2017
15:04:18
exec не подойдет

общаться с процессом надо

тык уже изгуглился

Sergey
01.04.2017
15:05:59
общаться с процессом надо
Обратная связь нужна? Или только передача внутрь?

Sheldhur
01.04.2017
15:06:05
мало кто в электроне реакт использует, и мало кто процессы вообще форкает, на стеке вопросов на эту тему штуки 4

обратная нужна

я даже прямо к пакетам путь указывал, не заводилось

и даже на main скрипт

Google
Sergey
01.04.2017
15:08:00
обратная нужна
Ну тут можно попробовать вариант- .exe пишет в консоль stdout и ловить его

А внутрь передавать с помощью флагов

Sheldhur
01.04.2017
15:08:45
о обратно? :)

Sergey
01.04.2017
15:09:02
Ловить stdout

Sheldhur
01.04.2017
15:09:11
ммм...

Sergey
01.04.2017
15:09:12
От exe

Как сделаешь рабочую версию, скинь код пожалуйста, на гист желательно, и только ту часть которая запускает процесс и общается с ним

Sheldhur
01.04.2017
15:13:47
да там же немного

Sergey
01.04.2017
15:14:12
Все равно

Sheldhur
01.04.2017
15:14:34
15 строк от силы, не считая обработчика message

Все равно
https://gist.github.com/sheldhur/e8c1e65758375c6c110c43e97f2cfb06

вышло немножко больше xD всё не проверял

Sergey
01.04.2017
16:33:19
Странно, как у тебя вообще exe через spawn работает

Spawn - порождает новый процесс ноды Это тоже самое что и в консоле набирать node yourCommand

Sheldhur
01.04.2017
16:37:43
Ноды нет же, только электрон

Нода только в dev

Если я все правильно понимаю

Sergey
01.04.2017
16:38:43
Не знаю где у тебя нода), но electron.exe это не нода

Sheldhur
01.04.2017
16:39:49
Электрон это электрон, но внутри нода :) чистую ноду в продакшене не выйдет запустить, если не стоит

Sergey
01.04.2017
16:40:08
Кажется я ошибаюсь по поводу spawn, то о чем я говорил это fork, хм надо загуглить - что такое spawn

Google
Sheldhur
01.04.2017
16:41:30
Я тоже не совсем понял, но там по разному запускается

Sergey
01.04.2017
16:41:54
require('child_process').spawn(): используется для больших объёмов данных; поддерживает stream’ы; может применяться с любыми командами; не создаёт новый экземпляр V8.require('child_process').fork(): создаёт новый экземпляр V8 и экземпляры работников; работает только со скриптами Node.js (команда node).require('child_process').exec(): неудобен для больших объёмов данных, потому что использует буфер; работает асинхронно, чтобы одновременно получать все данные в callback’е; может применяться с любой командой, не только node.

Sheldhur
01.04.2017
16:42:29
Ну и IPC через fork из коробки, хотя для spawn один аргумент добавить надо всего

Sergey
01.04.2017
16:42:38
https://m.habrahabr.ru/company/mailru/blog/283228/

Sheldhur
01.04.2017
16:42:57
Ога

эм...хз чё сделал, но инсерты в дочернем процессе стали просто супер быстрыми о_О

возможно из-за того, что не подгружал в sequelize модели

Sergey
01.04.2017
18:34:03
Я пилю сильно нажруженное приложение, и заметил что нода использует малую часть оперативы, а твои спавны создают новые экземпляры и они могут использовать другую свободную оперативу

Возможно отсюда быстродействие

Sheldhur
01.04.2017
18:34:46
да не, главный процесс где-то 300 метров сожрал

Sergey
01.04.2017
18:35:41
У меня 300 мб всего используется оперативы из 1гб свободной

Sheldhur
01.04.2017
18:36:14
я всё таки ставлю на модели, потому что даже raw запрос vs orm работает раз в 5 быстрею

а тут он пытается результат raw к модели привязать, если она есть, я так дума.

Sergey
01.04.2017
18:38:48
А как в ноде заюзать больше свободной оперативы? Кто Знает?

Sheldhur
01.04.2017
18:39:00
параметр есть

но больше 4х вроде не скормить

только форкать процессы

Sergey
01.04.2017
18:40:35
А как узнать что мое приложение использует максимум оперативы, чтоб форкнуть новый процесс?

В нужное время

Sheldhur
01.04.2017
18:40:53
в process вроде было чёта

Google
Sheldhur
01.04.2017
18:41:16
process.memoryUsage()

process.getProcessMemoryInfo()

Sergey
01.04.2017
18:43:52
только форкать процессы
Понял, спасибо. Попробую

а эта срань после сборки в пакет вообще работать будет?
Тоже интересно, если форкать в коде, а потом собрать в .exe, интересно, будет ли работать)

Проверил, форки после компиляции, - не работают

Sheldhur
02.04.2017
00:47:50
надо дебажить

возможно неверный путь к electron

в продакшене

Sergey
02.04.2017
00:48:09
подожди 5 мин

я сейчас пробую один вариант, уже компильтся

подожди 5 мин
попробовал этот модуль, тоже не пашет после компиляции https://www.npmjs.com/package/electron-spawn

Sheldhur
02.04.2017
00:54:53
а какая ошибка то вываливается, когда новый процесс запускаешь?

он вообще стартует?

Sergey
02.04.2017
00:55:26
никакая, просто не запускает спавны

Sheldhur
02.04.2017
00:55:42
а путь к электрону как задавал?

Страница 20 из 177