我正在上Udemy的Stephen Grinders MERN课程。本课程共有三个文件。我对节点模块的理解是它独立运行,这就是为什么我们需要将模块需要的所有内容导入模块内部的原因。我的问题是:
为什么在authRoutes.js文件中我们不需要导入passport.js文件?我们正在使用passport.authenticate函数是authRoutes.js文件,未在模块中对其进行配置。
index.js
const express = require('express');
require('./services/passport')
const app = express();
require('./Routes/authRoutes')(app);
const PORT = process.env.PORT || 3000;
app.listen(PORT);
passport.js
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const keys=require('../config/keys')
passport.use(new GoogleStrategy(
{
clientID:keys.googleClientID,
clientSecret:keys.googleClientSecret,
callbackURL:'/auth/google/callback'
},(accessToken,refreshToken,profile,done)=>{
console.log(`${accessToken}, ${refreshToken}, ${profile.displayName}`)
}
));
和
authRoutes.js
const passport = require('passport');
module.exports=app=>{
app.get('/auth/google',passport.authenticate('google',{
scope:['profile','email']
}))
app.get('/auth/google/callback',passport.authenticate('google'))
}
答案 0 :(得分:0)
passport.js 配置Passport,在使用Passport之前有必要进行配置。在 authRoutes.js 之前和在其中实际使用Passport之前,将 passport.js 导入 index.js 中。
为什么在authRoutes.js文件中我们不需要导入passport.js文件?
如果 passport.js 正在导出 authRoutes.js 需要的内容,则将需要此设置。但是它不会导出任何内容,只是更改passport
包的内部状态-在 passport.js 和 authRoutes.js 中是相同的。
我对节点模块的理解是它独立运行,这就是为什么我们需要将模块需要的所有内容导入模块内部的原因。
这样做是为了建立模块依赖关系的层次结构。因为实际上是 authRoutes.js 依赖于Passport,所以在此处导入 passport.js 而不是在 index.js 中导入可能更合理。