2012-04-21 16 views
23

Tak, próbuję napisać metodę, która wywołuje http. Kiedy uruchomić metodę, pojawia się następujący błąd:Meteor.http metoda jest niezdefiniowana na serwerze?

Exception while invoking method 'upload' TypeError: Cannot call method 'call' of undefined

Oto co kod wygląda następująco:

Klient:

console.log(Meteor.call('upload', f, content)); 

Serwer:

Meteor.methods({ 
    upload: function(file, content) { 
    this.unblock(); 
    Meteor.http.call("PUT", "http://blah"); 
    } 
}); 

UPDATE : Problem rozwiązany, okazuje się, że musiałem włączyć pakiet: meteor add http

+0

* przy ekspresji * 'Meteor.http' ocenia undefined ... gdzie jest problem/pytanie? Pytanie brzmi: "Dlaczego Meteor.http nie jest funkcją?" lub niektóre takie. To tylko debugowanie.) –

+0

http://docs.meteor.com/#meteor_http_call –

+0

Czy są jakieś błędy w konsoli przeglądarki? –

Odpowiedz

40

Wystarczy dodać pakiet HTTP przez uruchomienie tego na linii poleceń w projekcie:

meteor dodać http

+0

Próbowałem tego ... nadal dając mi błąd, że Meteor.http jest niezdefiniowany. –

3

Również trzeba oddzwonić, używając po stronie klienta Meteor.call.

Z dokumentacji:

On the client, if you do not pass a callback and you are not inside a stub, call will return undefined, and you will have no way to get the return value of the method. That is because the client doesn't have fibers, so there is not actually any way it can block on the remote execution of a method.

Należy więc zmienić tę

console.log(Meteor.call('upload', f, content)); 

do tego

Meteor.call('upload', f, content, function(error, result){console.log(result);}); 
Powiązane problemy