Lancer un processus enfant dans l'électronique
Je suis l'aide d'un Noeud v6.2.2 et de l'Électron v1.2.5.
J'ai une petite application que j'ai construit sur le haut de l'Électron et maintenant, j'ai besoin de fork
le processus à exécuter certaines tâches en cours d'exécution dans un autre nœud de processus, mais il ne semble pas au travail, quand je suis à la recherche à la ChildProcess
objet, je peux voir que dans l'argument spawnargs[0] est initialisé avec l'électron exécutable au lieu de nœud de façon à ce que j'ai fait c'est que j'ai essayé d'utiliser spawn
à la place, mais il ne fonctionne pas pour autant que je peux dire.
Voici le code que j'utilise pour spawn
le processus (vie à l'intérieur du fichier ./modules/tester.js
):
const {spawn} = require('child_process');
var child = spawn("node", ["worker.js"], { stdio: ['inherit', 'inherit', 'inherit', 'ipc'] });
const self = {};
self.start = () => {
console.log("start");
child.send("ping");
};
Et voici le code que j'utilise pour mon worker.js
fichier:
process.on("message", (data) => {
console.log(data);
console.log("pong");
});
Et enfin, c'est la façon dont je suis le consommer.
const {app} = require("electron");
const tester = require("./modules/tester");
app.on("ready", () => {
tester.start();
});
Peut-être que je fais mal, mais je ne le pense pas, car quand je suis en utilisant nodejs il semble très bien fonctionner.
J'ai essayé de nombreux exemples, mais aucun d'eux ne semble fonctionner, une autre possibilité est que j'ai besoin de faire quelque chose de spécial dans l'électronique pour qu'il fonctionne mais je ne sais pas.
Ouais, c'est parce que je suis en cours d'exécution d'une recherche dns et j'ai besoin de le faire rapidement, j'ai une solution en place bien que, ce que j'ai fait, c'est quand je suis en cours d'exécution de l'application, je suis également démarrer une nouvelle instance de NodeJS l'extérieur et ont de NodeJS et de l'Électron de communiquer par le biais de l'IPC.
OriginalL'auteur Eyal Solnik | 2016-07-03
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à la compilation de l'Électron avec le
--asar
drapeau, basé sur les docs ce serait un problème.Il y a aussi ce problème où vous ne pouvez pas avoir la stdio attaché à la mère. Donc en supposant avoir un décollement de la stdio n'est pas un deal-breaker, vous pouvez essayer de
{ stdio: 'ignore' }
.OriginalL'auteur Josh
Enfin, je l'ai résolu.
La façon dont j'ai résolu ce problème est en train de faire exactement l'inverse, NodeJS est disponible sur les machines de production, donc j'ai juste écrit un
start.js
script que, fondamentalement, frayer un enfant pour exécuter des Électrons et sur le processus parent je suis en cours d'exécution de cette longue tâche en cours d'exécution et enfin, je suis l'aide de l'IPC afin de communiquer entre les deux processus.Eh bien, je n'ai plus de travail sur le projet, donc je n'ai pas changé. 🙂
OriginalL'auteur Eyal Solnik
Aussi, vous pouvez fourche nodejs fichier à l'intérieur d'électrons processus:
OriginalL'auteur Kirill Gusyatin