试图在nodejs子进程中执行svn ls命令返回错误

时间:2012-08-23 19:50:52

标签: node.js child-process

我想在尝试时运行svn ls <path>命令我收到错误说明

svn: '.' is not a working copy
svn: Can't open file '.svn/entries': No such file or directory

这是尝试在没有路径的情况下运行命令并且在不受SVN版本控制的目录中的标准错误。但事情是,当我在执行它之前调试我的命令时,它会明确指出远程SVN存储库的完整,有效的路径。

例如,svn ls https://svn.example.com/this/is/a/valid/repo

如果我将日志复制并粘贴到我自己的bash中,它会很好地列出目录。

这是我要执行的代码

function svnls (path) {
    var cp = require('child_process'),
        command = 'svn ls ' + path;

    console.log(command);  // -> svn ls https://svn.example.com/this/is/a/valid/repo
    cp.exec(command, function (err, stdout, stderr) {
        console.log(stderr);
    });
}

或者我尝试了更详细的产生bash实例的方法:

function svnls (path) {
    var bash = require('child_process').spawn('bash');

    bash.stdout.on('data', function (data) {
        var buff = new Buffer(data),
            result = buff.toString('utf8');

        console.log(result);
    }); 

    bash.stderr.on('data', function (data) {
        var buff = new Buffer(data),
            error = buff.toString('utf8');

        console.log(error);
    }); 

    bash.on('exit', function (code) {
        console.log(code);
    });

    bash.stdin.write('svn ls ' + path);
    bash.stdin.end();
}   

并向控制台输出相同的错误以及退出代码(1)。

有谁知道为什么会失败?

0 个答案:

没有答案