2016-11-24 1 views
1

Ich versuche Meteor.method aus dem Inneren der Client-Komponente zu nennen:Meteor Methoden, versucht child_process.spawn zu nennen, Typeerror bekommen: child_process.spawn ist keine Funktion

Meteor.call('execute', this.parameter); 

Meteor.methods eine Funktion haben, die laicht das Verfahrens wie folgt:

cp.spawn(pathtoscript, ['-t', parameter.myid], options); 

Dies ist ein gültiger Prozess erzeugen, die erfolgreich ausgeführt wird (es dauert bis zu 30 Sekunden zur Vervollständigung) jedoch Browser Konsole spuckt einen Fehler unmittelbar nach dem Anruf getätigt wird:

Exception while simulating the effect of invoking 'execute' TypeError: cp.spawn is not a function(…) TypeError: cp.spawn is not a function

Ich habe versucht, nur den Prozess zu erzeugen und die Funktion zu verlassen und ich habe auch versucht, auf 'schließen' Ereignis zu warten. Beide Male ist die Ausführung im Backend erfolgreich, aber die Browser-Konsole gibt eine Ausnahme aus.

Ich habe auch versucht Meteor.methods asynchron

Meteor.call('execute', this.parameter, function(error, result) { 
    if (error) { 
     alert(error, error.reason); 
    } 
     console.log(result); 
    });*/ 

Beim Hinzufügen von Rückgabewerten in Meteor.methods zu nennen. Und es endet immer auf die gleiche Weise.

Können Sie bitte in solchen Fällen den richtigen Weg für Laichprozesse angeben?

Antwort

0

Dies liegt daran, dass sich der Methodencode sowohl auf dem Client als auch auf dem Server befindet. Es kann nicht auf dem Client ausgeführt werden, da spawn im Browser nicht vorhanden ist.

dies zu beheben Sie einfach Ihre Methode, um Server-Code nur bewegen konnten oder es nur mit der Bedingung Meteor.isServer innerhalb einer if Anweisung wickeln:

if (Meteor.isServer) { 
    Meteor.methods({ 
    execute(params) { 
     //... 
    } 
    }); 
} 
+0

Danke, es hat funktioniert. Es sieht etwas verwirrend aus, da ich brauchte, dass dieser Code vom Client aufgerufen und auf dem Server ausgeführt wurde und ich keine expliziten Informationen in den Meteor-Dokumenten finden konnte. –

+0

Sie sollten dies https://guide.meteor.com/structure.html#files-outside überprüfen – Khang

Verwandte Themen