gpt4 book ai didi

javascript - 确定 Meteor/Node 中服务器返回的输出是客户端上的 stderr 还是 stdout?

转载 作者:行者123 更新时间:2023-12-03 09:22:55 30 4
gpt4 key购买 nike

我运行用户给出的 exec 命令并将其输出返回给客户端。当我只返回结果时,一切正常,但我需要基于 stdout 和 stderr 运行两个不同的 if 场景。如何确定返回的输出是stdout还是stderr?在这种情况下,它总是像标准输出一样运行。*

*我需要直接的解决方案,想避免使用集合。请注意,这只是示例代码。

服务器:

// load future from fibers
var Future = Meteor.npmRequire("fibers/future");
// load exec
var exec = Meteor.npmRequire("child_process").exec;

Meteor.methods({
'command' : function(line) {
// this method call won't return immediately, it will wait for the
// asynchronous code to finish, call unblock to allow this client
this.unblock();
var future = new Future();
exec(line, function(error, stdout, stderr) {
if(stdout){
console.log(stdout);
future.return(stdout);
} else {
console.log(stderr);
future.return(stderr);
}
});
return future.wait();
}
});

客户:

var line = inputdl.value;

Meteor.call('command', line, function(error, stdout, stderr) {
if(stdout){
console.log(stdout);
} else {
alert('Not valid command: ' + stderr);
}
});

最佳答案

您可以返回一个包含 stdout 和 stderr 的对象:

Meteor.methods({
'command' : function(line) {
this.unblock();
var future = new Future();
exec(line, function(error, stdout, stderr) {
future.return({stdout: stdout, stderr: stderr});
});
return future.wait();
}
});

在客户端:

Meteor.call('command', line, function(error, result) {
if(result.stdout){
console.log(result.stdout);
} else {
alert('Not valid command: ' + result.stderr);
}
});

关于javascript - 确定 Meteor/Node 中服务器返回的输出是客户端上的 stderr 还是 stdout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31789233/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com