나는 서버에 내 유성 응용 프로그램을 배포하기 위해 노력하고있어하지만 항상 내 유성 서버 로그에 오류가에 호출 방법경고 오류 : 유성 코드는 항상 섬유 내에서 실행해야하는 경우 서버
Fri Jun 21 2013 11:39:31 GMT+0000 (UTC)] INFO HIT /img/bg.png
183.90.41.21 [Fri Jun 21 2013 11:39:32 GMT+0000 (UTC)] INFO HIT /favicon.ico 183.90.41.21 [Fri Jun 21 2013 11:39:41 GMT+0000 (UTC)] INFO HIT /form 183.90.41.21 [Fri Jun 21 2013 11:39:42 GMT+0000 (UTC)] INFO HIT /favicon.ico 183.90.41.21 [Fri Jun 21 2013 11:39:49 GMT+0000 (UTC)] WARNING }).run();
^[Fri Jun 21 2013 11:39:49 GMT+0000 (UTC)] WARNING app/server/server.js:53 [Fri Jun 21 2013 11:39:49 GMT+0000 (UTC)] WARNING Error: Meteor code must always run within a Fiber
at _.extend.get (app/packages/meteor/dynamics_nodejs.js:14:13)
at _.extend.apply (app/packages/livedata/livedata_server.js:1268:57)
at _.extend.call (app/packages/livedata/livedata_server.js:1229:17)
at Meteor.startup.Meteor.methods.streamTwit (app/server/server.js:51:22)
하지만, 나는 이미 그것을 광섬유 (Fiber)로 싸서 로컬에서 잘 작동합니다. 나는 정말로 그 문제가 무엇인지 모릅니다. 누구든지 도울 수 있으면 감사합니다.
//server.js
Meteor.startup(function() {
var require = Npm.require;
var fs = require('fs');
var path = require('path');
var base = path.resolve('.');
var isBundle = fs.existsSync(base + '/bundle');
var modulePath = base + (isBundle ? '/bundle/static' : '/public') + '/node_modules';
var ntwitter = require(modulePath + '/ntwitter');
var Fiber = require(modulePath + '/fibers');
var twit = new ntwitter({
consumer_key: 'my key',
consumer_secret: 'my key',
access_token_key: 'my key',
access_token_secret: 'my key'
});
Meteor.methods({
postText : function(questionText){
twit.verifyCredentials(function (err, data) {
if (err) {
console.log("Error verifying credentials: " + err);
process.exit(1);
}
}).updateStatus(questionText,
function (err, data) {
if (err) {
console.log('Tweeting failed: ' + err);
return false;
}
else {
console.log('Success!');
return true;
}
}
);
},
streamTwit: function (twit){
var userid = '1527228696';
twit.stream(
'statuses/filter',
{ follow: userid},
function(stream) {
stream.on('data', function(tweet) {
Fiber(function(){
if(tweet.user.id_str === userid)
{
Meteor.call('addQn', tweet);
}
}).run();
console.log('----------------------tracking tweet-----------------');
console.log(tweet);
console.log('---------------------------------------------------------');
console.log(tweet.user.screen_name);
console.log(tweet.user.name);
console.log(tweet.text);
});
}
);
},
addQn:function(tweet){
questionDB.insert({'tweet': tweet, 'date': new Date()});
}
});
Fiber(function(){
Meteor.call('streamTwit', twit);
}).run();
});
PS : 내 OAuth는 키를 교체했습니다. 미리 감사는
죄송합니다. 유성을 처음 접했는데 이해할 수 없었습니다. Meteor.bindEnvironment. 예를 제시 할 수 있습니까? 감사! –
이미 bindenvironment 예제 - 나는 당신이 명확하게 차이를 볼 수 있도록 '일반적인'예제를 추가했습니다. –
내가 이해하지 못하는 것은 위의 예를 어떻게 바꿀 수 있는가입니다. 내 함수는 Meteor.methods로 작성되었으며, 함수는 methodname으로 선언되었습니다 : function (params) {}, 그렇다면 someMethod는 무엇이고 {OPTIONS} params는 무엇입니까? 덕분에 –