如何从主要过程代码中获取Electron stdout内容?

时间:2019-04-08 17:57:21

标签: javascript google-chrome electron

我可以从我的主要流程代码中以某种方式从Electron获取stdout的内容吗?

例如,我有一个电子应用,并且在我的主要过程代码中:

import {app, BrowserWindow, globalShortcut, session} from "electron"

// Now what? How do I get any and all output that goes to the console?

我好奇的原因是,当我使用app.commandLine.appendSwitch(...)为Chrome设置一些标志时,我在Chrome的控制台中看到了输出,我想看看是否有可能获得此输出以某种方式,从我的Electron主过程代码中。

编辑,以防上述内容不够清晰:

电子输出到控制台。我的代码在Electron中运行。例如,底层的Chrome实例将信息输出到stdout,因此,我自己的电子应用程序因此将与底层的Chrome输出的相同内容输出到stdout。

我想使用我自己的电子应用程序中的代码捕获我自己的电子应用程序中的所有认沽期权。

这有意义吗?

例如,如果我在Electron主过程代码中输入以下内容:

app.commandLine.appendSwitch('remote-debugging-port', '8315')

这会导致我的Electron应用程序将东西输出到stdout(或类似的终端输出中看到的东西)。

我想从导致输出的同一代码中捕获此输出,所以:

// this line indirectly causes my app to output to stdout
// (because it is forwarding Chrome's output, or something):
app.commandLine.appendSwitch('remote-debugging-port', '8315')

// Now how to I capture that output?

1 个答案:

答案 0 :(得分:0)

是的!当然可以。只要您的安全性允许,Electron就可以在运行它的机器上本地运行。

const buffer_size = (1024 * 500000);//Very large buffer size. Shouldn't ever need anything this big

     getCommandLineResponse: async function (callback) {
            let date = moment().toDate();

            let promise = function () {
                return new Promise((resolve, reject) => {
                    //create a child process to run
                    var {exec} = require('child_process');
                    let path = require('path');
                    let app = require('electron').remote;
                    let exePath = "YOUREXE.exe";
                    //Define the command line interface and all arguments
                    let cli = `"${exePath}"`;
                    //This is the core. Call the .EXE specifying the options
                    exec(cli, {maxBuffer: buffer_size}, (err, stdout, stderr) => {
                        if (err) {
                            reject(stderr);
                        } else {
                            console.log('Received from CLI - ' + stdout);
                            resolve(stdout);
                        }

                        exec = null;
                    });

                });
            };

            //Execute the CLI
            await promise(filePath);

            if(callback)
            {
                await callback();
            }
        }