背景
我们现在要在 Electron 项目中通过 node 执行一个 js 文件。目前比较合适的方法是使用 fork, 但是却无法监听退出时间。
// foo.js
console.log("bar");
// main process
import { fork } from "node:child_process";
const child = fork("foo.js");
child.on("exit", () => {
console.log("根本不执行");
});
child.on("close", () => {
console.log("根本不执行");
});
解决方法
// foo.js
console.log("bar");
process.parentPort.postMessage("exitManually");
process.exit(0);
// main process
import { utilityProcess } from "electron";
const child = utilityProcess.fork("foo.js");
child.on("message", (msg) => {
if (msg === "exitManually") {
console.log("执行完了!");
}
});