我正在尝试使用Electron(使用React)编写桌面应用程序。当用户单击桌面应用程序中的按钮时,它将运行外部Node.js脚本。我想使用Electron来构建一个GUI,它能够在用户单击按钮后调用脚本来执行一些工作。
gpnt7bae1#
查看child_process node js模块。你可以这样实现:在客户端:
child_process
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()。举个例子
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; } });
1条答案
按热度按时间gpnt7bae1#
查看
child_process
node js模块。你可以这样实现:在客户端:
在电子侧:
请记住,为了在客户端使用ipcRenderer,您可能需要在浏览器窗口中启用
nodeIntegration
。为了能够杀死一个进程,你必须使用
child_process.spawn
方法并将其保存在变量中,然后运行variableThatProcessWasSpawned.stdin.pause();
,然后运行variableThatProcessWasSpawned.kill()
。举个例子