electron - 在 Electron 中生成子进程

标签 electron

我正在使用 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/

相关文章:

electron - 如何在 Electron 中注册全局快捷方式(加速器)

node.js - 如何更改 Node 模块 "say"的音频输出设备

electron - 如何制作一个对话框以在打开时阻止 BrowserWindow?

javascript - 如何修复 '' http ://localhost:300 0' has been blocked by CORS policy: No ' Access-Control-Allow-Origin' header is present on the requested resource. '

javascript - Webpack无法在Electron应用程序中从Nodejs打包https

macos - 如何在 OSX 中为选定的文本注册右键菜单?

javascript - 在 vue Electron 应用程序中无法使用 ECMAScript 类属性?

javascript - Electron:从 main 调用渲染器函数

electron - 用于打开在 Electron 中不起作用的pdf文件的参数

javascript - 在 Electron 中,在菜单打开时评估菜单项的状态