首页 > 解决方案 > Nodejs子进程被sigterm关闭,如果我在命令窗口中执行它就可以工作,如何保持活力?

问题描述

我想执行命令,比如用 xcode 构建 IOS

    var cp = require("child_process");
    var cmd="xcodebuild archive -project xx.xcodeproj -scheme xxx -archivePath ~/Library/Developer/Xcode/Archives/xxx-ios.xcarchive";
    var o = cp.exec(cmd, execOptions, {
        stdio: "inherit"
    });
    o.stdout.on("data", function (chunk) {
        if (!chunk || chunk.trim() === "" || chunk.trim().indexOf("UP-TO-DATE") != -1) return;
        else {
            console.info(chunk.trim().toString());
        }
    });
    o.stderr.on("data", (data) => {
        console.info(data);
    });
    o.on("close", function (code,signal) {
        if (code === 1) {
            console.info(cmd+ "close code : " + code);
            reject(false);
        } else {
            console.info(cmd+ "close code : " + code);
            resolve(true);
        }
    });

    o.on("exit", (code) => {
        console.info(cmd+ "exit code : " + code);
    });

基本上,如果我给出简单的命令,它就可以工作,但我想通过 xCode 构建 ios,进程以代码 null 和信号“SIGTERM”关闭,我还添加了 maxBuffer 选项,但它仍然不起作用,我该如何让它工作?

nodejs的子进程https://nodejs.org/api/child_process.html

标签: node.jsxcode

解决方案


哦,根本没有答案,所以我将添加我的解决方案来帮助其他人。我的问题是它在那里包含太多的输出字,并且它达到了最大缓冲区,所以我只需通过以下命令获取更少的输出: var cmd="xcodebuild archive -project xx.xcodeproj -scheme xxx -archivePath ~/Library/Developer/Xcode /Archives/xxx-ios.xcarchive | egrep -w -i -C 2 "(ARCHIVE|error)"


推荐阅读