【问题标题】:How to create subprocess using exec in Typescript Class?如何在 Typescript 类中使用 exec 创建子进程?
【发布时间】:2021-08-06 22:14:50
【问题描述】:

我想在 gitlab 中自动制作 MR。在我的 React/Typescript UI 中按下按钮后,我想在我的 typescript 类中运行命令行代码来克隆一个 repo。但是,当我尝试使用 exec 时,我总是会收到此错误:TypeError: exec is not a function.

我的打字稿课:

const { exec } = require("child_process");

export class GitlabRepo {

    constructor(){
    }
    
    clone(){
        console.log("CLONE");

        exec("ls -la", (error, stdout, stderr) => {
            if (error) {
                console.log(`error: ${error.message}`);
                return;
            }
            if (stderr) {
                console.log(`stderr: ${stderr}`);
                return;
            }
            console.log(`stdout: ${stdout}`);
        });
    }
    
    commit(message: string){
        console.log("COMMIT", message);
    }

    push(){
        console.log("PUSH");
    }
}

现在我只是想让ls -la 的一些模拟功能运行。理想情况下,我会将这些命令替换为 "git clone repo-here"

【问题讨论】:

  • 这段代码是由浏览器执行还是由 Node 服务器端应用执行?
  • UI 将在浏览器上运行。这会让我想做的事情变得不可能吗?
  • 我真的只想自动化合并请求。

标签: reactjs typescript git subprocess exec


【解决方案1】:

在浏览器中运行的 JavaScript 无权执行进程。 child_process 由 Node 提供,而不是 Web 浏览器。

您有几个选项可以从 React 启动 Git:

  1. 如果您要构建 Web 应用,则该 Web 应用必须对服务器进行 HTTP 调用,服务器将调用 exec 来启动 Git。
  2. 如果你想使用 React 但不关心它是否是一个 web 应用程序,你可以使用Ink 来构建一个终端应用程序。终端应用由 Node 执行,因此您可以访问执行进程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-18
    • 2011-11-29
    • 2019-03-14
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    相关资源
    最近更新 更多