gpt4 book ai didi

Electron app.relaunch() 松散标准输入输出

转载 作者:行者123 更新时间:2023-12-03 12:21:04 25 4
gpt4 key购买 nike

使用

chokidar.watch(mainFile).on('change', () => {
app.relaunch();
app.exit(0);
});

我可以让我的 Electron 应用程序在源更改时自动重新加载。但是,由于主进程被终止,我丢失了调试所需的终端输出。有没有办法使用app.relaunch()保留父进程的stdio

最佳答案

免责声明:下面我解释了我在 2016 年发现的一个不错的解决方法的设置。不确定 2018 年是否有更好的方法。

我的 Electron 应用程序的重新加载分两部分处理:

渲染过程

我使用 electron-reload仅监听 renderer 文件夹中的变化:

require("electron-reload")(path.join(__dirname, "/renderer"));

主要流程

自动重新加载通过 Gulp 脚本“手动”处理,如下所示:

let child = null;
let start = () => {
// Was already running? Kill it and restart.
if (child) child.kill();
let env = process.env;
env.NODE_ENV = "dev";
child = proc.spawn(electron, ["./main/main.js"], { env: env });

function print(data) {
let str = data.toString().trim();
if (str) gutil.log(str);
}
child.stdout.on("data", print);
child.stderr.on("data", print);
};

// Run (dev mode with watch and autoreload)
gulp.task("dev", ["watch"], () => {
start();
});

// Watch and move to dist on the fly.
// Hard reset if main process source changes.
gulp.task("watch", () => {
// If ./renderer/**/*.js changes, electron-reload will handle reload of renderer process only.
// If ./main/**/*.js changes, we kill the Electron process and start a new one.
gulp.watch("./main/**/*.js", start);
});

使用 gulp run dev 运行应用程序将启动一个观察程序并在文件更改时终止/重新启动整个应用程序。

关于Electron app.relaunch() 松散标准输入输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40526055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com