`passport` Becomes Undefined, on "Create New Middleware"

What’s happening:
I got an error message in the console saying,

ReferenceError: passpost is not defined
    at /home/runner/boilerplate-advancednode/server.js:45:5
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async main (/home/runner/boilerplate-advancednode/connection.js:14:9)

My code so far

"use strict";
require("dotenv").config();
const express = require("express");
const myDB = require("./connection");
const fccTesting = require("./freeCodeCamp/fcctesting.js");
const session = require("express-session");
const passport = require("passport");
const ObjectID = require("mongodb").ObjectID;
const LocalStrategy = require("passport-local");
const bodyParser = require("body-parser");

const app = express();

app.set("view engine", "pug");

fccTesting(app); //For FCC testing purposes
app.use("/public", express.static(`${process.cwd()}/public`));

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

app.use(session({
  secret: process.env.SESSION_SECRET,
  resave: true,
  saveUninitialized: true,
  cookie: { secure: false }
}));

app.use(passport.initialize());
app.use(passport.session());

app.use(bodyParser.urlencoded({ extended: true }));
myDB(async client => {
  const myDataBase = await client.db("database").collection("users");

  app.route("/").get((req, res) => {
    res.render("pug", {
      title: "Connected to Database",
      message: "Please login",
      showLogin: true
    });
  });

  app.route("/login").post(
    passpost.authenticate("local", 
    { failureRedirect: "/" }),
    (req, res) => {
      if (req.user && req.body) {
        console.log(req.body);
      }
    }
  );

  passport.serializeUser((user, done) => {
    done(null, user._id);
  });

  passport.deserializeUser((id, done) => {
    myDataBase.findOne({ _id: new ObjectID(id) }, (err, doc) => {
      done(null, doc);
    });
  });

  passport.use(new LocalStrategy(
    (username, password, done) => {
      myDataBase.findOne({ username: username }, (err, user) => {
        console.log(`User ${username} has attempted to log in`);
        if (err) {
          return done(err);
        }
        if (!user) {
          return done(null, false);
        }
        if (password !== user.password) {
          return done(null, false);
        }
        return done(null, user);
      });
    }
  ));

  const ensureAuthenticated = (req, res, next) => {
    if (req.isAuthenticated()) {
      return next();
    }
    res.redirect("/");
  };

  app.route("/profile").get(ensureAuthenticated, (req, res) => {
    res.render(`${process.cwd()}/views/pug/profile`);
  });
  
}).catch(e => {
  app.route("/").get((req, res) => {
    res.render("pug", {
      title: e,
      message: "Unable to login"
    });
  });
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Listening on port ${PORT}`);
});

What did I do wrong? Someone please help. Thanks.
My browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.56.

Challenge: Create New Middleware

Link to the challenge:

Reread that very closely. Think about spelling.

Now read this line very closely:

    passpost.authenticate("local", 

Oh, damn. That silly little mistake. Thanks, man.

Get used to it - “silly little mistakes that I can’t see” are part of dev work. You get better at finding them, but they never go away.

1 Like

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.