MongoDB and Mongoose - Error: Cannot find module 'express'

Getting this error and am stuck and don’t know what to do. Plz help.



> internal/modules/cjs/loader.js:584
> 
> 10:01 AM
> 
> throw err;
> 
> 10:01 AM
> 
> ^
> 
> 10:01 AM
> 
> 10:01 AM
> 
> Error: Cannot find module 'express'
> 
> 10:01 AM
> 
> at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
> 
> 10:01 AM
> 
> at Function.Module._load (internal/modules/cjs/loader.js:508:25)
> 
> 10:01 AM
> 
> at Module.require (internal/modules/cjs/loader.js:637:17)
> 
> 10:01 AM
> 
> at require (internal/modules/cjs/helpers.js:22:18)
> 
> 10:01 AM
> 
> Jump Toat Object.<anonymous> (/app/server.js:6:15)
> 
> 10:01 AM
> 
> at Module._compile (internal/modules/cjs/loader.js:701:30)
> 
> 10:01 AM
> 
> at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
> 
> 10:01 AM
> 
> at Module.load (internal/modules/cjs/loader.js:600:32)
> 
> 10:01 AM
> 
> at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
> 
> 10:01 AM
> 
> at Function.Module._load (internal/modules/cjs/loader.js:531:3)
> 
> 10:01 AM
> 
> 17s ago
> 
> internal/modules/cjs/loader.js:584
> 
> 10:01 AM
> 
> throw err;
> 
> 10:01 AM
> 
> ^
> 
> 10:01 AM
> 
> 10:01 AM
> 
> Error: Cannot find module 'express'
> 
> 10:01 AM
> 
> at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
> 
> 10:01 AM
> 
> at Function.Module._load (internal/modules/cjs/loader.js:508:25)
> 
> 10:01 AM
> 
> at Module.require (internal/modules/cjs/loader.js:637:17)
> 
> 10:01 AM
> 
> at require (internal/modules/cjs/helpers.js:22:18)
> 
> 10:01 AM
> 
> Jump Toat Object.<anonymous> (/app/server.js:6:15)
> 
> 10:01 AM
> 
> at Module._compile (internal/modules/cjs/loader.js:701:30)
> 
> 10:01 AM
> 
> at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
> 
> 10:01 AM
> 
> at Module.load (internal/modules/cjs/loader.js:600:32)
> 
> 10:01 AM
> 
> at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
> 
> 10:01 AM
> 
> at Function.Module._load (internal/modules/cjs/loader.js:531:3)
> 
> 10:01 AM
> 
> 8s ago
> 
> internal/modules/cjs/loader.js:584
> 
> 10:01 AM
> 
> throw err;
> 
> 10:01 AM
> 
> ^
> 
> 10:01 AM
> 
> 10:01 AM
> 
> Error: Cannot find module 'express'
> 
> 10:01 AM
> 
> at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
> 
> 10:01 AM
> 
> at Function.Module._load (internal/modules/cjs/loader.js:508:25)
> 
> 10:01 AM
> 
> at Module.require (internal/modules/cjs/loader.js:637:17)
> 
> 10:01 AM
> 
> at require (internal/modules/cjs/helpers.js:22:18)
> 
> 10:01 AM
> 
> Jump Toat Object.<anonymous> (/app/server.js:6:15)
> 
> 10:01 AM
> 
> at Module._compile (internal/modules/cjs/loader.js:701:30)
> 
> 10:01 AM
> 
> at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
> 
> 10:01 AM
> 
> at Module.load (internal/modules/cjs/loader.js:600:32)
> 
> 10:01 AM
> 
> at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
> 
> 10:01 AM
> 
> at Function.Module._load (internal/modules/cjs/loader.js:531:3)
>

what does your file server.js look like? Please provide us with some code not only the error.

Here is what my server.js looks like thanks

/********************************************
 * DO NOT EDIT THIS FILE
 * the verification process may break
 *******************************************/

var express = require("express");
var app = express();
try {
  var mongoose = require("mongoose");
} catch (e) {
  console.log(e);
}
var fs = require("fs");
var path = require("path");
var bodyParser = require("body-parser");
var router = express.Router();

var enableCORS = function(req, res, next) {
  if (!process.env.DISABLE_XORIGIN) {
    var allowedOrigins = [
      "https://marsh-glazer.gomix.me",
      "https://narrow-plane.gomix.me",
      "https://www.freecodecamp.com"
    ];
    var origin = req.headers.origin;
    if (!process.env.XORIGIN_RESTRICT || allowedOrigins.indexOf(origin) > -1) {
      console.log(req.method);
      res.set({
        "Access-Control-Allow-Origin": origin,
        "Access-Control-Allow-Methods": "GET, POST, OPTIONS",
        "Access-Control-Allow-Headers":
          "Origin, X-Requested-With, Content-Type, Accept"
      });
    }
  }
  next();
};

// global setting for safety timeouts to handle possible
// wrong callbacks that will never be called
var timeout = 10000;

app.use(bodyParser.urlencoded({ extended: "false" }));
app.use(bodyParser.json());

app.get("/", function(req, res) {
  res.sendFile(path.join(__dirname, "views", "index.html"));
});

router.get("/file/*?", function(req, res, next) {
  if (req.params[0] === ".env") {
    return next({ status: 401, message: "ACCESS DENIED" });
  }
  fs.readFile(path.join(__dirname, req.params[0]), function(err, data) {
    if (err) {
      return next(err);
    }
    res.type("txt").send(data.toString());
  });
});

router.get("/is-mongoose-ok", function(req, res) {
  if (mongoose) {
    res.json({ isMongooseOk: !!mongoose.connection.readyState });
  } else {
    res.json({ isMongooseOk: false });
  }
});

var Person = require("./myApp.js").PersonModel;

router.use(function(req, res, next) {
  if (req.method !== "OPTIONS" && Person.modelName !== "Person") {
    return next({ message: "Person Model is not correct" });
  }
  next();
});

router.post("/mongoose-model", function(req, res, next) {
  // try to create a new instance based on their model
  // verify it's correctly defined in some way
  var p;
  p = new Person(req.body);
  res.json(p);
});

var createPerson = require("./myApp.js").createAndSavePerson;
router.get("/create-and-save-person", function(req, res, next) {
  // in case of incorrect function use wait timeout then respond
  var t = setTimeout(() => {
    next({ message: "timeout" });
  }, timeout);
  createPerson(function(err, data) {
    clearTimeout(t);
    if (err) {
      return next(err);
    }
    if (!data) {
      console.log("Missing `done()` argument");
      return next({ message: "Missing callback argument" });
    }
    Person.findById(data._id, function(err, pers) {
      if (err) {
        return next(err);
      }
      res.json(pers);
      pers.remove();
    });
  });
});

var createPeople = require("./myApp.js").createManyPeople;
router.post("/create-many-people", function(req, res, next) {
  Person.remove({}, function(err) {
    if (err) {
      return next(err);
    }
    // in case of incorrect function use wait timeout then respond
    var t = setTimeout(() => {
      next({ message: "timeout" });
    }, timeout);
    createPeople(req.body, function(err, data) {
      clearTimeout(t);
      if (err) {
        return next(err);
      }
      if (!data) {
        console.log("Missing `done()` argument");
        return next({ message: "Missing callback argument" });
      }
      Person.find({}, function(err, pers) {
        if (err) {
          return next(err);
        }
        res.json(pers);
        Person.remove().exec();
      });
    });
  });
});

var findByName = require("./myApp.js").findPeopleByName;
router.post("/find-all-by-name", function(req, res, next) {
  var t = setTimeout(() => {
    next({ message: "timeout" });
  }, timeout);
  Person.create(req.body, function(err, pers) {
    if (err) {
      return next(err);
    }
    findByName(pers.name, function(err, data) {
      clearTimeout(t);
      if (err) {
        return next(err);
      }
      if (!data) {
        console.log("Missing `done()` argument");
        return next({ message: "Missing callback argument" });
      }
      res.json(data);
      Person.remove().exec();
    });
  });
});

var findByFood = require("./myApp.js").findOneByFood;
router.post("/find-one-by-food", function(req, res, next) {
  var t = setTimeout(() => {
    next({ message: "timeout" });
  }, timeout);
  var p = new Person(req.body);
  p.save(function(err, pers) {
    if (err) {
      return next(err);
    }
    findByFood(pers.favoriteFoods[0], function(err, data) {
      clearTimeout(t);
      if (err) {
        return next(err);
      }
      if (!data) {
        console.log("Missing `done()` argument");
        return next({ message: "Missing callback argument" });
      }
      res.json(data);
      p.remove();
    });
  });
});

var findById = require("./myApp.js").findPersonById;
router.get("/find-by-id", function(req, res, next) {
  var t = setTimeout(() => {
    next({ message: "timeout" });
  }, timeout);
  var p = new Person({ name: "test", age: 0, favoriteFoods: ["none"] });
  p.save(function(err, pers) {
    if (err) {
      return next(err);
    }
    findById(pers._id, function(err, data) {
      clearTimeout(t);
      if (err) {
        return next(err);
      }
      if (!data) {
        console.log("Missing `done()` argument");
        return next({ message: "Missing callback argument" });
      }
      res.json(data);
      p.remove();
    });
  });
});

var findEdit = require("./myApp.js").findEditThenSave;
router.post("/find-edit-save", function(req, res, next) {
  var t = setTimeout(() => {
    next({ message: "timeout" });
  }, timeout);
  var p = new Person(req.body);
  p.save(function(err, pers) {
    if (err) {
      return next(err);
    }
    try {
      findEdit(pers._id, function(err, data) {
        clearTimeout(t);
        if (err) {
          return next(err);
        }
        if (!data) {
          console.log("Missing `done()` argument");
          return next({ message: "Missing callback argument" });
        }
        res.json(data);
        p.remove();
      });
    } catch (e) {
      console.log(e);
      return next(e);
    }
  });
});

var update = require("./myApp.js").findAndUpdate;
router.post("/find-one-update", function(req, res, next) {
  var t = setTimeout(() => {
    next({ message: "timeout" });
  }, timeout);
  var p = new Person(req.body);
  p.save(function(err, pers) {
    if (err) {
      return next(err);
    }
    try {
      update(pers.name, function(err, data) {
        clearTimeout(t);
        if (err) {
          return next(err);
        }
        if (!data) {
          console.log("Missing `done()` argument");
          return next({ message: "Missing callback argument" });
        }
        res.json(data);
        p.remove();
      });
    } catch (e) {
      console.log(e);
      return next(e);
    }
  });
});

var removeOne = require("./myApp.js").removeById;
router.post("/remove-one-person", function(req, res, next) {
  Person.remove({}, function(err) {
    if (err)
      if (err) {
        return next(err);
      }
    var t = setTimeout(() => {
      next({ message: "timeout" });
    }, timeout);
    var p = new Person(req.body);
    p.save(function(err, pers) {
      if (err) {
        return next(err);
      }
      try {
        removeOne(pers._id, function(err, data) {
          clearTimeout(t);
          if (err) {
            return next(err);
          }
          if (!data) {
            console.log("Missing `done()` argument");
            return next({ message: "Missing callback argument" });
          }
          console.log(data);
          Person.count(function(err, cnt) {
            if (err) {
              return next(err);
            }
            data = data.toObject();
            data.count = cnt;
            console.log(data);
            res.json(data);
          });
        });
      } catch (e) {
        console.log(e);
        return next(e);
      }
    });
  });
});

var removeMany = require("./myApp.js").removeManyPeople;
router.post("/remove-many-people", function(req, res, next) {
  Person.remove({}, function(err) {
    if (err) {
      return next(err);
    }
    var t = setTimeout(() => {
      next({ message: "timeout" });
    }, timeout);
    Person.create(req.body, function(err, pers) {
      if (err) {
        return next(err);
      }
      try {
        removeMany(function(err, data) {
          clearTimeout(t);
          if (err) {
            return next(err);
          }
          if (!data) {
            console.log("Missing `done()` argument");
            return next({ message: "Missing callback argument" });
          }
          Person.count(function(err, cnt) {
            if (err) {
              return next(err);
            }
            if (data.ok === undefined) {
              // for mongoose v4
              try {
                data = JSON.parse(data);
              } catch (e) {
                console.log(e);
                return next(e);
              }
            }
            res.json({
              n: data.n,
              count: cnt,
              ok: data.ok
            });
          });
        });
      } catch (e) {
        console.log(e);
        return next(e);
      }
    });
  });
});

var chain = require("./myApp.js").queryChain;
router.post("/query-tools", function(req, res, next) {
  var t = setTimeout(() => {
    next({ message: "timeout" });
  }, timeout);
  Person.remove({}, function(err) {
    if (err)
      if (err) {
        return next(err);
      }
    Person.create(req.body, function(err, pers) {
      if (err) {
        return next(err);
      }
      try {
        chain(function(err, data) {
          clearTimeout(t);
          if (err) {
            return next(err);
          }
          if (!data) {
            console.log("Missing `done()` argument");
            return next({ message: "Missing callback argument" });
          }
          res.json(data);
        });
      } catch (e) {
        console.log(e);
        return next(e);
      }
    });
  });
});

app.use("/_api", enableCORS, router);

// Error handler
app.use(function(err, req, res, next) {
  if (err) {
    res
      .status(err.status || 500)
      .type("txt")
      .send(err.message || "SERVER ERROR");
  }
});

// Unmatched routes handler
app.use(function(req, res) {
  if (req.method.toLowerCase() === "options") {
    res.end();
  } else {
    res
      .status(404)
      .type("txt")
      .send("Not Found");
  }
});

var listener = app.listen(process.env.PORT || 3000, function() {
  console.log("Your app is listening on port " + listener.address().port);
});

/********************************************
 * DO NOT EDIT THIS FILE
 * the verification process may break
 *******************************************/


Do you have a link to your Glitch project?

Here it is.

First, in your package.json, try changing the mongodb version from "mongodb": "4.0.12", to "mongodb": "^3.3.2",

Once you fix that, following the instructions in the next error message you see.

Also, you need to put a valid MONGO_URI in the .env file and reference it in your mongoose.connect

Thank you so much. Changing the version this time worked.

The tests are designed to work with mongo 3.x and not the newer 4.x

Ok, thanks for the infor :+1:t5: