Sheldhur
кидало эксепшен на спанв
Sheldhur
TypeError: Bad argument
Sergey
так это
Sergey
ему же строка нужна
Sergey
путь к файлу
Sergey
или имя команды которую запустить
Sergey
почитал бы доку ноды
Sergey
https://nodejs.org/api/child_process.html#child_process_child_process
Sheldhur
о_О это из доки самого электрона
Sergey
электрон на ноде основан
Sheldhur
ну
Sheldhur
лан, попробую ещё потом
Sheldhur
Sheldhur
через electron-workers
Sergey
Sheldhur
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,
}));
Sheldhur
примерно так
Sergey
захардкодил?
Sheldhur
потом по человечески сделаю, главное, что работает
Sergey
хех))
Sergey
ну так впринципе и должно быть
Sheldhur
как заспавнить дочерний процесс электрона с бабелем? а то меня чёт не радует переписывать модели на es2015
GG
Spawn("electron",
[”arg1", ”arg2"],
{cwd:"yourdir"})
Sheldhur
не хочет так
GG
Покажи как делаешь
GG
Код
Sheldhur
сек
Sheldhur
Код
захардкодил для проверки
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\\'
});
Sheldhur
в ProcessExplorer и без cwd выставляет директорию с проектом
Sheldhur
в cmd выходит \WebstormProjects\Vector\node_modules\electron\dist\electron.exe ./app/worker.js -r babel-register -r babel-register
GG
Exe
Sheldhur
убрать?
Sheldhur
чёт сомневаюсь, что поможет
GG
Spawn это процесс ноды, а .exe это не нода
Sheldhur
ну процесс то спавнит
Sheldhur
всё работает
Sheldhur
но бабеля нет
Sheldhur
тогда уж так, наверно \WebstormProjects\Vector\node_modules\.bin\electron
GG
Child_process.exec() для .exe
Sheldhur
гм...
Sheldhur
а эта срань после сборки в пакет вообще работать будет?
Sheldhur
или придется весь node_modules за собой тащить?
GG
Хз, я вообще сейчас в кинотеатре) так что посмотри доку ноды, и по гугли
Sheldhur
exec не подойдет
Sheldhur
общаться с процессом надо
Sheldhur
тык уже изгуглился
Sheldhur
мало кто в электроне реакт использует, и мало кто процессы вообще форкает, на стеке вопросов на эту тему штуки 4
Sheldhur
Sheldhur
обратная нужна
Sheldhur
я даже прямо к пакетам путь указывал, не заводилось
Sheldhur
и даже на main скрипт
GG
обратная нужна
Ну тут можно попробовать вариант- .exe пишет в консоль stdout и ловить его
GG
А внутрь передавать с помощью флагов
Sheldhur
о обратно? :)
GG
Ловить stdout
Sheldhur
ммм...
GG
От exe
GG
Как сделаешь рабочую версию, скинь код пожалуйста, на гист желательно, и только ту часть которая запускает процесс и общается с ним
Sheldhur
да там же немного
GG
Все равно
Sheldhur
15 строк от силы, не считая обработчика message
Sheldhur
Все равно
https://gist.github.com/sheldhur/e8c1e65758375c6c110c43e97f2cfb06
Sheldhur
вышло немножко больше xD всё не проверял
GG
Странно, как у тебя вообще exe через spawn работает
GG
Spawn - порождает новый процесс ноды
Это тоже самое что и в консоле набирать node yourCommand
Sheldhur
Ноды нет же, только электрон
Sheldhur
Нода только в dev
Sheldhur
Если я все правильно понимаю
GG
Не знаю где у тебя нода), но electron.exe это не нода
Sheldhur
Электрон это электрон, но внутри нода :) чистую ноду в продакшене не выйдет запустить, если не стоит
GG
Кажется я ошибаюсь по поводу spawn, то о чем я говорил это fork, хм надо загуглить - что такое spawn
Sheldhur
Я тоже не совсем понял, но там по разному запускается
GG
require('child_process').spawn(): используется для больших объёмов данных; поддерживает stream’ы; может применяться с любыми командами; не создаёт новый экземпляр V8.require('child_process').fork(): создаёт новый экземпляр V8 и экземпляры работников; работает только со скриптами Node.js (команда node).require('child_process').exec(): неудобен для больших объёмов данных, потому что использует буфер; работает асинхронно, чтобы одновременно получать все данные в callback’е; может применяться с любой командой, не только node.
Sheldhur
Ну и IPC через fork из коробки, хотя для spawn один аргумент добавить надо всего
GG
https://m.habrahabr.ru/company/mailru/blog/283228/
Sheldhur
Ога
Sheldhur
эм...хз чё сделал, но инсерты в дочернем процессе стали просто супер быстрыми о_О