【发布时间】:2016-11-05 10:52:59
【问题描述】:
我正在使用 Node v6.2.2 和 Electron v1.2.5。
我有一个基于 Electron 构建的小型应用程序,现在我需要 fork 该进程在另一个节点进程中运行一些长时间运行的任务,但它似乎不起作用,当我查看ChildProcess 对象,我可以看到在参数spawnargs[0] 中是用电子可执行文件而不是节点初始化的,所以我所做的是我尝试使用spawn,但就我而言它不起作用可以说。
这是我用于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 中做一些特殊的事情才能使其工作,但我不知道。
【问题讨论】:
-
从技术上讲,您已经有两个带有 Main 和 Renderer 的进程。在Main进程上运行是不是太多了?
-
@Josh 是的,是的,因为我正在运行 dns 查找并且我需要快速完成,但我有一个解决方案,我所做的是在运行应用程序时我还在外部启动了一个新的 NodeJS 实例,并让 NodeJS 和 Electron 通过 IPC 进行通信。
-
如何获取电子下那个child_process的输出?
标签: electron