2014-04-12 3 views
2

나는 (페이스 북 전략으로) 정기적 인 로그인을하려고하고있다. 그리고 나는 나의 콘솔에서이 오류를 계속 얻고있다.Passport Facebook 전략 MongoDB에 사용자 저장

Error: ENOENT, open '/home/ec2-user/XXXX/node_modules/express/node_modules/connect/node_modules/static-favicon/../public/favicon.ico'

그런가요?

/** 
* Module dependencies. 
*/ 

var config = require('./oauth.js'); 
var express = require('express'); 
var routes = require('./routes'); 
var user = require('./routes/user'); 
var http = require('http'); 
var path = require('path'); 
var mongoose = require('mongoose'); 
var passport = require('passport'); 
var FacebookStrategy = require('passport-facebook').Strategy; 

var app = express(); 


// all environments 
app.set('port', process.env.PORT || 3000); 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 
app.use(express.favicon()); 
app.use(express.logger('dev')); 
app.use(express.json()); 
app.use(express.urlencoded()); 
app.use(express.methodOverride()); 
app.use(app.router); 
app.use(express.static(path.join(__dirname, 'public'))); 


app.get('/', routes.index); 
app.get('/users', user.list); 

app.get('/auth/facebook/callback', passport.authenticate('facebook', {failureRedirect: '/'}), function(req, res) { 
    console.log('Facebook'); 
    res.redirect('/success'); 
}); 

http.createServer(app).listen(app.get('port'), function() { 
    console.log('Express server listening on port ' + app.get('port')); 
}); 

// MongoDB Settings 
// Connection 
mongoose.connect('mongodb://ec2-XX-XXX-XX-XXX.XX-XXX-2.compute.amazonaws.com/XXX', function(err) { 
    if (err) { 
     console.log(err); 
    } else { 
     console.log('Connected to the Users DB'); 
    } 
}); 
// Schema 
var usersSchema = mongoose.Schema({ 
    username: String, 
    facebook_id: String 
}); 
// Insert To DB 
var insertUser = mongoose.model('Users', usersSchema); 


// LogIn 
passport.use(new FacebookStrategy({ 
    clientID: config.facebook.clientID, 
    clientSecret: config.facebook.clientSecret, 
    callbackURL: config.facebook.callbackURL 
}, 
function(accessToken, refreshToken, profile, done) { 
    console.log('Now Check User'); 
    insertUser.findOne({ 
     facebook_id: profile.id 
    }, function(err, doc) { 
     if (err) { 
      console.log('user is alredy registered!'); 
      return done(err); 
     } 
     if (!insertUser) { 
      var newgame = new insertUser({ 
       username: profile.username, 
       facebook_id: profile.id 
      }); 
      newgame.save(function(err) { 
       if (err) { 
        console.log(err); 
       } else { 
        console.log('Saved'); 
       } 
       return done(err, doc); 
      }); 
     } else { 
      //found user. Return 
      console.log('user is alredy registered!'); 
      return done(err, doc); 
     } 
    }); 
} 
)); 
+0

볼을 http://stackoverflow.com/questions/22853563/error-enoent-open-favicon-ico – badsyntax

답변

1

솔루션은 badsyntax (감사 badsyntax)에 의해 제안 된 솔루션의 한 부분이었다

이 내 코드가 (페이스 북 응용 프로그램 토큰이 다른 JS 파일에 있습니다)입니다. 그리고 결국,이 무엇을 문제 해결 :

app.use(express.favicon(__dirname + '/node_modules/express/node_modules/connect/node_modules/static-favicon/favicon.ico'));