2017-08-29 74 views
1

Im爲我的項目設置passportjs。我使用passportConfig變量將護照配置文件導入到app.js。我想讓passportConfig文件在app.js中運行。NodeJS需要模塊不工作

// app.js file 

var mysql   = require('mysql'), 
    passport  = require('passport'), 
    passportConfig = require('./passportConfig.js'); 

// Database 
var connection = mysql.createConnection({ 
    host: 'localhost', 
    user: 'root', 
    password: 'password', 
    database: 'test' 
}); 

>

就在這裏,我不明白爲什麼我需要再次要求MySQL和護照。因爲我已經在app.js.中完成了它。當我刪除需求時出現一個錯誤,告訴我要包含它們。

// passport config file 

// Require 
var mysql   = require('mysql'); 
var passport  = require('passport'), 


// Database 
var connection = mysql.createConnection({ 
    host: 'localhost', 
    user: 'root', 
    password: 'password', 
    database: 'test' 
}); 


module.exports = function(passport) { 
    // Passport Session - persistent login sessions 
    passport.serializeUser(function(user, done) { 
     done(null, user.id); 
    }); 


    passport.deserializeUser(function(id, done) { 
     var query = 'SELECT * FROM `users` WHERE `id` = ?'; 
     var inserts = [id]; 
     query = mysql.format(query, inserts)... 

這是否意味着passportConfig文件不被在app.js運行,即使我要求我的app.js文件?這是我能想到的唯一原因

+0

只是一個猜測,也許定義MySQL和護照行上面的配置。也許用同樣的陳述來定義它們都會導致這個問題。我可能是錯的,但我想不出其他什麼。 –

回答

2

當你「需要」一個模塊。 Node.js包裝每個模塊。什麼是包裝:

包裝:給文件的私人範圍。這使得requiremodule對象對我們需要的每個文件都是本地的。

source

這就是爲什麼我認爲你需要在這兩個文件passportmysql