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