如何使用Electron-React应用程序运行外部脚本

prdp8dxp  于 2023-05-15  发布在  Electron
关注(0)|答案(1)|浏览(244)

我正在尝试使用Electron(使用React)编写桌面应用程序。
当用户单击桌面应用程序中的按钮时,它将运行外部Node.js脚本。我想使用Electron来构建一个GUI,它能够在用户单击按钮后调用脚本来执行一些工作。

gpnt7bae

gpnt7bae1#

查看child_process node js模块。你可以这样实现:
在客户端:

const { ipcRenderer } = require("electron");
document.getElementById("someButton").addEventListener(e => {
  ipcRenderer.send("runScript");
});

在电子侧:

const { ipcMain } = require("electron");
const exec = require('child_process').exec;

ipcMain.on("runScript", (event, data) => {
   exec("node script.js", (error, stdout, stderr) => { 
        console.log(stdout);
    });
});

请记住,为了在客户端使用ipcRenderer,您可能需要在浏览器窗口中启用nodeIntegration
为了能够杀死一个进程,你必须使用child_process.spawn方法并将其保存在变量中,然后运行variableThatProcessWasSpawned.stdin.pause();,然后运行variableThatProcessWasSpawned.kill()。举个例子

const spawn = require('child_process').spawn ;

let process = null;

ipcMain.on("runScript", (event, data) => {
   process = spawn("node script.js");
});

ipcMain.on("killProcess", (event, data) => {
   if(process !== null) {
       process.stdin.pause();
       process.stdin.kill();
       process = null;
   }
});

相关问题