child_process.fork não inicia um servidor expresso dentro do aplicativo eletrônico empacotado
Eu tenho um aplicativo de elétrons no qual preciso não apenas executar a interface para o usuário, mas também iniciar um servidor expresso que servirá arquivos para pessoas conectadas pela rede.
Eu tenho tudo funcionando se eu iniciar o electron e o servidor expresso normalmente, mas estou bastante confiante de que precisarei do servidor executando um thread diferente para evitar uma interface lenta e até problemas com o servidor.
Por esse motivo, tentei executar meu servidor expresso usando o child_process.fork e funcionou quando usonpm start
, mas quando eu usoelectron-builder
Para criar um .exe, o programa instalado não inicia o servidor expresso.
Tentei executar meu servidor imediatamente usando:
require('child_process').fork('app/server/mainServer.js')
Tentei várias alterações, prefixando o arquivo com__dirname
, process.resourcesPath
e até mesmo codificar o caminho do arquivo gerado; alterar as opções de bifurcação para passarcwd: __dirname
, detached: true
estdio: 'ignore'
; e até tentei usarspawn
comprocess.execPath
, que também funcionará comnpm start
mas não fica empacotado (ele continua abrindo novas instâncias do meu aplicativo, parece óbvio depois que você faz hehe)
Nota: Se eu não bifurcar e exigir o script do servidor imediatamente, userequire('server/mainServer.js')
funciona no aplicativo empacotado; portanto, o problema mais parecido não é o expresso em si.
Nota 2: eu tenhoasar: false
para resolver outros problemas, então esse não é o solucionador de problemas aqui.
Criei um pequeno projeto git para mostrar meu problema:
https://github.com/victorivens05/electron-fork-error
Qualquer ajuda será muito apreciada.