2016-11-24 4 views
1

Je suis en train d'appeler Meteor.method à l'intérieur du composant client:méthodes Meteor, en essayant d'appeler child_process.spawn, obtenir TypeError: child_process.spawn est pas une fonction

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

Meteor.methods ont une fonction qui engendre le processus comme suit:

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

Ceci est un spawn de processus valide qui est exécuté avec succès (il faut jusqu'à 30 secondes pour terminer), mais la console du navigateur recrache une erreur immédiatement après appel est fait:

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

J'ai essayé juste de générer le processus et de quitter la fonction et j'ai également essayé d'attendre l'événement 'close'. Les deux fois l'exécution sur le backend est réussie, mais la console du navigateur lance une exception.

J'ai aussi essayé d'appeler Meteor.methods de manière asynchrone

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

Tout en ajoutant des valeurs de retour dans Meteor.methods. Et cela se termine toujours de la même manière.

Pouvez-vous s'il vous plaît conseiller la bonne manière pour les processus de ponte dans de tels cas?

Répondre

0

Cela est dû au fait que le code de votre méthode est à la fois client et serveur. Il ne peut pas fonctionner sur le client car il n'y a pas spawn dans le navigateur.

Pour résoudre ce problème, vous pouvez simplement déplacer votre méthode au code serveur uniquement ou tout simplement l'envelopper dans une déclaration if avec état Meteor.isServer:

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

Merci, ça a marché. Cela semble un peu confus car j'avais besoin que ce code soit appelé depuis le client et exécuté sur le serveur et je n'ai pas pu trouver d'informations explicites dans les documents météore. –

+0

Vous devriez vérifier ce https://guide.meteor.com/structure.html#files-outside – Khang