0
我的代碼如下爲什麼everyauth崩潰'undefined不是函數'?
var express = require('express'),
everyauth = require('everyauth'),
util = require('util'),
Promise = everyauth.Promise,
users = require('./users');
everyauth.twitter
.consumerKey('')
.consumerSecret('')
.findOrCreateUser(function(session, accessToken, accessTokenSecret, twitterUserData) {
console.log('pre promise');
var promise = new Promise();
users.findOrCreateByTwitterData(twitterUserData, promise);
return promise;
})
.redirectPath('/');
它打印出「前promise'and然後崩潰是如下
pre promise
/.../node_modules/everyauth/lib/modules/everymodule.js:348
throw err;
^
TypeError: undefined is not a function
at Object._findOrCreateUser (.../test.js:12:19)
at Object.exec (.../node_modules/everyauth/lib/step.js:47:21)
at .../node_modules/everyauth/lib/stepSequence.js:26:38
at [object Object].fulfill (.../node_modules/everyauth/lib/promise.js:42:25)
at .../node_modules/everyauth/lib/stepSequence.js:29:23
at [object Object].fulfill (.../node_modules/everyauth/lib/promise.js:42:25)
at .../node_modules/everyauth/lib/modules/twitter.js:16:15
at passBackControl (.../node_modules/everyauth/node_modules/oauth/lib/oauth.js:359:11)
at IncomingMessage.<anonymous> (.../node_modules/everyauth/node_modules/oauth/lib/oauth.js:378:9)
at IncomingMessage.emit (events.js:88:20)
用戶的樣子:
var cradle = require('cradle');
var c = new cradle.Connection('...', 80, {
auth:{username:'admin', password:'...'}
});
var users = c.database('users');
module.exports.findOrCreateByTwitterData = function(twitterUserData, promise) {
console.log('finding');
users.view('docs/twitterId', {key:twitterUserData.id_str}, function (err, doc) {
if (err) {
console.log('twitter error');
return;
}
if (doc) {
promise.fulfill(doc);
}
else {
var doc = {
};
}
c.database('users').save(doc, function (err, res) {
if (err) {
console.log('error with users');
return;
}
promise.fulfill(doc);
});
});
}
'用戶'文件裏面有什麼? – 2012-04-11 13:29:18
您可能需要調查護照(http://passportjs.org/)。這是對everyauth的靈活替代方案,它不使用承諾,因此在應用程序中調試可能更容易。我是開發人員,隨時可以對我提出任何問題。 – 2012-04-11 16:50:43