Я добавил meteorhacks: пакет НПМ и установленный fbgraph с помощью:Fetching Facebook Список друзей с Метеор
$ npm install fbgraph
Мой стороне сервера код выглядит следующим образом сейчас:
function Facebook(accessToken) {
this.fb = Meteor.npmRequire('fbgraph');
this.accessToken = accessToken;
this.fb.setAccessToken(this.accessToken);
this.options = {
timeout: 3000,
pool: {maxSockets: Infinity},
headers: {connection: "keep-alive"}
}
this.fb.setOptions(this.options);
}
Facebook.prototype.query = function(query, method) {
var self = this;
var method = (typeof method === 'undefined') ? 'get' : method;
var data = Meteor.sync(function(done) {
self.fb[method](query, function(err, res) {
done(null, res);
});
});
return data.result;
}
Facebook.prototype.getUserData = function() {
return this.query('me');
}
Facebook.prototype.getFriendsData = function() {
return this.query('/me/friendlists');
}
Meteor.methods({
getUserData: function() {
var fb = new Facebook(Meteor.user().services.facebook.accessToken);
var data = fb.getUserData();
return data;
},
getFriendsData: function() {
var fb = new Facebook(Meteor.user().services.facebook.accessToken);
var data = fb.getFriendsData();
return data;
}
});
Meteor.publish("getUserData", function() {
return Meteor.users.find({_id: this.userId});
});
Meteor.publish("getFriendsData", function(){
return Meteor.users.find({_id: this.userId});
});
Мой config.js является Кроме того, я думаю:
Accounts.ui.config({
passwordSignupFields: "USERNAME_ONLY",
requestPermissions: {
facebook: ['email', 'user_friends'],
}
});
на стороне клиента у меня есть шаблон:
<template name="friends">
<div class="container">
{{friendlist}}
</div>
</template>
И я пытаюсь вызвать 'getFriendsList' с:
Template.friends.helpers({
friendlist: function() {
Meteor.call("getFriendsData");
}
});
Наконец, мой packages.json выглядит следующим образом:
{
"fbgraph": "1.1.0"
}
Когда я пытаюсь запустить мое приложение, Я получаю сообщение об ошибке следующим образом:
Exception while simulating the effect of invoking 'getFriendsData
TypeError: Meteor.npmRequire is not a function
Прошу прощения, если это глупый вопрос, Я довольно новичок в Метеор. И я для жизни меня не могу понять этого. Я бы очень признателен за помощь.
Я уже добавил meteorhacks: пакет npm с использованием этой команды. Я даже попробовал прочитать npm-container с этими командами. Но проблема все еще сохраняется. Есть ли что-то, что я делаю неправильно? – Storm
Несмотря на то, что это на стороне сервера, попробуйте явно обернуть его if (Meteor.isServer) {}, чтобы убедиться, что он выполняется только на стороне сервера, так как Meteor.npmRequire() является только серверной. Ошибка, которую вы видите, говорит нам, что она не может найти npmRequire(), поэтому либо она не установлена правильно, либо выполняется где-то, что она не может ее найти (например, на стороне клиента). –
Я попытался обернуть его, если (Meteor.isServer) {}, и я даже повторил meteorhacks: npm после удаления npm-container. Еще не повезло. – Storm