【问题标题】:Node is running one exec per js file节点每个 js 文件运行一个 exec
【发布时间】:2015-02-12 06:59:36
【问题描述】:

每个 Js 文件节点只运行一个 Exec(子进程) 有什么方法可以在单个 Js 文件中运行多个 exec 命令? 在我执行命令后,在异步系列函数中,exec 停止, 如何在不退出项目的情况下执行所有三个 exec 函数?

这是我尝试过的:

var exec = require('child_process').exec;
var fs  = require('fs');
var async = require('async');


var find = /regex/;

async.series({
one:function(callback){
exec('git ls-remote',{maxBuffer: 1024 * 500}, function(error, stdout,       stderr) {
    fs.writeFile(__dirname+'/idsandDates.txt',stdout, function (err) {
        if (err) throw err;
        //console.log(stdout);
    });
    console.log('stderr Here: ' + stderr);
    if (error !== null) {
        console.log('exec error Here: ' + error);
        callback(null,1);
    }
});

}
,
two:function(callback){
var LineByLineReader = require('line-by-line'),
lr = new LineByLineReader('idsandDates.txt');
var commitId;
lr.on('error', function (err) {
    // 'err' contains error object
});

lr.on('line', function (line) {
    if(line.search(find)>0){
        commitId = line.split("\t")[0];
    }
});

lr.on('end', function () {
    console.log('hello');
    exec('git show -s'+commitId,{maxBuffer: 1024 * 500}, function(error, stdout,stderr) {
        fs.writeFile(__dirname+'/commitDateFile.txt',stdout, function (err)       {
            if (err) throw err;
            console.log(stdout);
        });
        callback(null,2);
    });
});
}

,
three:function(callback){
var find = /Date:/;
var LineByLineReader = require('line-by-line'),
lr = new LineByLineReader('commitDateFile.txt');
var commitDate;
var i = 1;

lr.on('error', function (err) {
    // 'err' contains error object
});

lr.on('line', function (line) {
    if(i==3){
        commitDate= line.slice(5,line.length).trim();
    }
    i++;
});

lr.on('end', function(){
    var date = new Date(commitDate);//--since='+trueDate+'--name-only --pretty=format:
    var trueDate = date.getFullYear()+'-'+date.getMonth()+'-'+date.getDay();
    console.log(trueDate);
    var exec = require('child_process').exec;
    exec('git log --since='+trueDate+' --name-only --pretty=format:',{maxBuffer: 1024 * 500}, function(error, stdout, stderr) {
        fs.writeFile(__dirname+'/modiiedJs.txt',stdout, function (err) {
        if (err) throw err;
        console.log(stdout);
        });
        console.log('stderr her1: ' + stderr);
        if (error !== null) {
            console.log('exec error Here2: ' + error);
            callback(null,3);
        }
    });

});

}
},
function(err, results) {
    console.log(results);
}
);

【问题讨论】:

    标签: windows node.js exec child-process


    【解决方案1】:

    更新:

    嘿, 我已经解决了使用 'q' 执行多个 exec 的问题 使用承诺和方法的节点框架

    非常感谢那些试图解决我的问题的人:)

    快乐编码:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多