Javascript 为什么everyauth与';未定义不是函数';?

Javascript 为什么everyauth与';未定义不是函数';?,javascript,node.js,twitter,everyauth,Javascript,Node.js,Twitter,Everyauth,我的代码如下 var express = require('express'), everyauth = require('everyauth'), util = require('util'), Promise = everyauth.Promise, users = require('./users'); everyauth.twitter .consumerKey('') .consumerSecret('') .findOrCreateUser(func

我的代码如下

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('/');
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 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('/');
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)

我对everyauth 0.2.32也有同样的问题。 看起来everyauth.Promise未被导出,当您尝试实例化“未定义”类时,应用程序崩溃


您可以检查(Promise==“undefined”)

在everyauth的最新版本中,是否应使用以下语法:

.findOrCreateUser(function(session, accessToken, accessTokenSecret, twitterUserData) {
    var promise = this.Promise();
    users.findOrCreateByTwitterData(twitterUserData, promise);
    return promise;
})

用户
文件中有什么?您可能需要调查Passport()。它是everyauth的灵活替代品,everyauth不使用承诺,因此可能更容易在应用程序中调试。我是开发者,有任何问题都可以问我。