我正在使用 Node v6.2.2 和 Electron v1.2.5。
我有一个在 Electron 之上构建的小型应用程序,现在我需要fork
该进程以在另一个节点进程中运行一些长时间运行的任务,但它似乎不起作用,当我查看 ChildProcess
对象时,我可以看到参数 spawnargs[0] 是用 Electron 可执行文件而不是节点初始化的,所以我所做的是尝试使用 spawn
相反,但据我所知,它不起作用。
这是我用来生成
进程的代码(存在在文件./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");
};
这是我在 worker.js
文件中使用的代码:
process.on("message", (data) => {
console.log(data);
console.log("pong");
});
最后,这就是我消费它的方式。
const {app} = require("electron");
const tester = require("./modules/tester");
app.on("ready", () => {
tester.start();
});
也许我做错了,但我不这么认为,因为当我使用nodejs时,它似乎工作得很好。
我尝试了很多例子,但似乎都不起作用,另一种可能性是我需要在 Electron 中做一些特殊的事情才能让它起作用,但我不知道。
最佳答案
终于解决了。
我解决这个问题的方法恰恰相反,NodeJS 在生产机器上可用,所以我只编写了一个 start.js
脚本,该脚本基本上生成一个子进程来运行 Electron 并在父进程上运行我正在运行这个长时间运行的任务,最后我使用 IPC 在两个进程之间进行通信。
关于electron - 在 Electron 中生成子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38172308/