【发布时间】:2019-10-05 21:53:01
【问题描述】:
我有一个在我的主 nodejs 应用程序中启动的 Electron 应用程序。用户必须启动我的 index.js,然后生成一个 Electron 窗口。问题是我无法在这两个进程之间进行通信。
我使用 spawn 是因为 fork 不适用于 Electron。 Child.send 不起作用。它什么都不做。
在我的 index.js 中:
let { spawn } = require("child_process")
let electron = spawn(require("electron"), ["."], {"detached": false, "cwd": "D:\\code\\electron_app", "env": {"some": JSON.stringify(["process", "env"])})
electron.send(JSON.stringify({
message: "some message"
}))
electron.on("close", (code) =>{
process.exit(code)
})
electron.on("exit", (code) => {
process.exit(code)
})
electron.stdout.pipe(process.stdout)
electron.stdio.pipe(process.stdio)
electron.stdin.pipe(process.stdin)
electron.stderr.pipe(process.stderr)
在我的 Electron 应用程序的 main.js 中:
const {app, BrowserWindow} = require('electron')
let win = null
process.on("message", console.log)
//I haven't put all functions here
这没有任何作用。 Electron 应用程序正在启动,但未发送消息。甚至没有错误。不知道有没有其他办法。
【问题讨论】:
-
如果它必须是 IPC,您可以从电子主进程通过标准输出发送您的消息,然后您的节点进程从那里读取它。并且您的节点进程将其消息写入子进程的标准输入,电子主进程从那里读取它。
标签: node.js electron child-process spawn