我正在为我的项目设置passportjs。我使用 PassportConfig 变量将护照配置文件导入到 app.js 中。我希望 PassportConfig 文件在 app.js 中运行。
// 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和passport。因为我已经在 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)...
这是否意味着即使我需要 app.js 中的文件,护照配置文件也不会在 app.js 中运行?这是我能想到的唯一原因
最佳答案
当你“需要”一个模块时。 Node.js 对每个模块进行包装。什么是包装:
Wrapping: To give the file its private scope. This is what makes both the
require
andmodule
objects local to every file we require.
这就是为什么我认为您需要在两个文件中包含 passport
和 mysql
。
关于node.js - NodeJS 需要模块无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45942996/