表达不可用于passport.js的静态路径

时间:2017-02-03 22:32:58

标签: express npm browser-sync

我是新手,所以对我很轻松。 我有以下server.js:

var express = require('express');
var app = express();
var path = require('path');

var port = process.env.PORT || 3001;
var cookieParser = require("cookie-parser");
var session = require('express-session');
var morgan = require("morgan");
var mongoose = require("mongoose");
var bodyParser = require("body-parser");
var passport = require("passport");
var flash = require("connect-flash");

app.use('/bower_components',  express.static(__dirname + '/bower_components'));
app.use('./config/auth',  express.static(__dirname + './config/auth'));
app.use('/app',  express.static(__dirname + '/app'));
app.set('views', __dirname + '/dist/views');
app.set('view engine', 'jade');

require('./config/passport')(passport);
app.use(morgan('dev'));
app.use(cookieParser());
app.use(bodyParser.urlencoded({extended:false}));
app.use(session({secret: 'anystringoftext',
                saveUninitialized: true,
                resave: true}));

app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
app.use(express.static(__dirname + '/dist')); 

//app.use(express.static(path.join(__dirname, '/*')));
require('./app/routes.js')(app, passport);

app.listen(port);
console.log('server running on port:'+port);

我正试图通过谷歌身份验证获得护照:

var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
var User = require('../app/models/user');
var configAuth = require('./config/auth');
module.exports = function(passport){
    passport.serializeUser(function(user, done){
        done(null, user.id);
    });
    passport.deserializeUser(function(id, done){
        User.findById(id, function(err, user){
            done(err, user);
        })
    });
    passport.use(new GoogleStrategy({
        clientID: configAuth.googleAuth.clientID,
        clientSecret: configAuth.googleAuth.clientSecret,
        callbackURL: configAuth.googleAuth.callbackURL
    }, function(accessToken, refreshToken, profile, done) {
        process.nextTick(function(){
            User.findOne({'google.id': profile.id}, function(err, user){
                if(err)
                    return done(err);
                if(user)
                    return done(null, user);
                else {
                    var newUser = new User();
                    newUser.google.id = profile.id;
                    newUser.google.token = accessToken;
                    newUser.google.name = profile.displayName;
                    newUser.google.email = profile.emails[0].value;

                    newUser.save(function(err){
                        if(err)
                            throw err;
                        return done(null, newUser);
                    })
                    console.log(profile);
                }
            });
        });
    }

   ));
}

我收到以下错误:

  

错误:找不到模块'./config/auth'       在Function.Module._resolveFilename(module.js:325:15)       在Function.Module._load(module.js:276:25)       在Module.require(module.js:353:17)       at require(internal / module.js:12:17)       在对象。 (/Users/toddcoulson/Documents/PTO/config/passport.js:3:18)       在Module._compile(module.js:409:26)       at Object.Module._extensions..js(module.js:416:10)       在Module.load(module.js:343:32)       在Function.Module._load(module.js:300:12)       在Module.require(module.js:353:17)       at require(internal / module.js:12:17)       在对象。 (/Users/toddcoulson/Documents/PTO/server.js:20:1)       在Module._compile(module.js:409:26)       at Object.Module._extensions..js(module.js:416:10)       在Module.load(module.js:343:32)       在Function.Module._load(module.js:300:12)

我曾尝试调用./config/auth,/ config / auth,/ config,许多不同的组合,但它似乎没有让config auth文件读入。有关我缺少什么的想法? 我一直在这里关注代码: https://github.com/BrentAureli/Youtube-Tutorials/tree/master/NodeJS%20Tutorials/Tutorial%2011%20-%20Google%20OAuth 但我不认为这正是我的情况,因为我在快递中加入了浏览器同步,并使其正常工作。所以我不确定浏览器同步是否与此有关,但我想我会添加它。在此先感谢您的帮助。 在文件夹结构方面,我的所有静态文件都在/ dist中,与server.js在同一级别上我有一个文件夹应用程序和一个文件夹配置。

1 个答案:

答案 0 :(得分:0)

您的passport.js文件似乎已经在require('./config/auth');文件夹中。因此,在config的第三行,它应该只是passport.js,因为文件路径是相对的。