Ich versuche, die stdout
meiner Methode zurückzugeben, aber auf dem Client habe ich immer undefined
, obwohl der Server sagt, es ist ein string
mit Inhalt.Wie kann ein sdtout von einem Server zu einem Client innerhalb einer Zeichenfolge zurückgegeben werden?
ich das tun:
'getExistingFiles': function() {
var list = "";
return new Promise(Meteor.bindEnvironment(function(resolve) {
child = exec_tool("ls -al",
function (error, stdout, stderr) {
if (error !== null) {
console.error('exec error: ' + error);
list = "error: " + error;
resolve(list);
return list;
}else{
list = stdout;
console.log(typeof list);
console.log("LIST:------------");
console.log(list);
resolve(list);
return list;
}
});
}));
}
Auf meinem Terminal Ich habe die Protokolle:
Aber auf dem Client, wenn ich versuche, den Wert zuzugreifen es undefined
ist:
Meteor.call("getExistingFiles",function(list){
console.log(list);
console.log(typeof list);
});
Meine Frage ist also, wie kann ich diese list
an den Client senden?
[EDIT] ich so versucht, zu testen, ob es mein Kunde war, der nicht in Ordnung war, aber nein, es ist auf dem Server denke ich
//server
var et = Meteor.wrapAsync(exec_tool);
try {
child = et('ls -al');
console.log("LIST:------------");
console.log(child);
console.log(typeof child);
return child;
} catch (err) {
throw new Meteor.Error(err, err.stack);
}
[EDIT 2] auch wie dieser es eine undefined
senden WARUM?!
var et = Meteor.wrapAsync(exec_tool);
try {
var proc = exec_tool("ls -al")
proc.stdout.on('data', function (data) {
//do something with data
console.log(data);
list = list + data;
});
proc.stdout.on('end', function() {
console.log("end");
console.log(list);
return list;
});
} catch (err) {
throw new Meteor.Error(err, err.stack);
}
es funktioniert! Vielen Dank – Jerome
Gern geschehen! –
könnten Sie einen Blick https://stackoverflow.com/questions/44156414/how-to-send-the-stderr-full-text-to-the-client-with-a-promise werfen, da ich Ihre Methode in einem verwenden anderen Anwendungsfall und ich kann den Fehler nicht erhalten – Jerome