Вопрос

I am trying to make regular login (With Facebook Strategy) And i keep getting this error in my console.

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

Way is that?

This is my code (The facebook application tokens are in another js file):

/**
 * 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);
        }
    });
}
));
Это было полезно?

Решение

The solution was a part of the solution that was suggested by badsyntax (Thanks badsyntax). And in the end, this what solved the problem:

app.use(express.favicon(__dirname + '/node_modules/express/node_modules/connect/node_modules/static-favicon/favicon.ico'));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top