Не удается найти модуль «мангуст», даже если мангуст установлен

#mongodb #express #mongoose

Вопрос:

Я понимаю, что Mongoose предоставляет простое решение на основе схемы для моделирования данных вашего приложения. Он включает в себя встроенное приведение типов, проверку, построение запросов, бизнес, поэтому вот мой код.

У меня есть следующая схема на моей модели:

 const mongoose = require("mongoose");
const crypto = require("crypto");

const userSchema = new mongoose.Schema(
  {
    username: {
      type: String,
      trim: true,
      required: true,
      max: 32,
      unique: true,
      index: true,
      lowercase: true,
    },
    name: {
      type: String,
      trim: true,
      required: true,
      max: 32,
    },
    email: {
      type: String,
      trim: true,
      required: true,
      unique: true,
      lowercase: true,
    },
    profile: {
      type: String,
      required: true,
    },
    hashed_password: {
      type: String,
      required: true,
    },
    salt: {
      type: String,
    },
    about: {
      type: String,
    },
    role: {
      type: Number,
      trim: true,
    },
    photo: {
      data: Buffer,
      contentType: String,
    },
    resetPasswordLink: {
      data: String,
      default: "",
    },
  },
  { timestamp: true }
);

userSchema
  .virtual("password")
  .set(function (password) {
    // create a temporary variable called _password
    this._password = password;
    // generate salt
    this.salt = this.makeSalt();
    // encryptPassword
    this.hashed_password = this.encryptPassword(password);
  })
  .get(function () {
    return this._password;
  });

userSchema.methods = {
  authenticate: function (plainText) {
    return this.encryptPassword(plainText) == this.hashed_password;
  },

  encryptPassword: function (password) {
    if (!password) return "";
    try {
      return crypto.createHmac("sha1", this.salt).update(password).digest("hex");
    } catch (err) {
      return "";
    }
  },

  makeSalt: function () {
    return Math.round(new Date().valueOf() * Math.random()   "");
  },
};

module.exports = mongoose.model("User", userSchema);
 

Но это вернуло эту ошибку:

 Error: Cannot find module 'mongoose'
Require stack:
- C:UsersJonesDesktopmultiblogmodelsuser.js
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    'C:\Users\Jones\Desktop\multiblog\models\user.js',
    'C:\Users\Jones\Desktop\multiblog\controllers\auth.js',
    'C:\Users\Jones\Desktop\multiblog\backend\routes\auth.js',
    'C:\Users\Jones\Desktop\multiblog\backend\server.js'
 

Есть идеи, что я здесь упускаю? Я гарантирую, что у меня package.json установлен мангуст.

Я также смотрю на другие файлы и структуру моей схемы, и это просто прекрасно.

Как вы думаете, в чем моя ошибка?

Обновить: package.json

 {
  "name": "backend",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "nodemon server.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "cookie-parser": "^1.4.5",
    "cors": "^2.8.5",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "express-jwt": "^6.0.0",
    "express-validator": "^6.10.0",
    "formidable": "^1.2.2",
    "jsonwebtoken": "^8.5.1",
    "lodash": "^4.17.21",
    "mongoose": "^5.12.3",
    "morgan": "^1.10.0",
    "nodemon": "^2.0.7",
    "shortid": "^2.2.16",
    "slugify": "^1.5.0",
    "string-strip-html": "^8.2.12"
  }
}
 

Комментарии:

1. попробуйте удалить node_modules папку и package-lock.json файл и запустите npm install команду.

2. Я попробовал и тот же результат.

3. добавьте файл package.json в свой вопрос.

4. Я только что обновил.

Ответ №1:

rm -rf node_modules package-lock.json amp;amp; npm install amp;amp; npm start

Если это не сработало, я почти уверен, что некоторые из ваших папок находятся за пределами вашей текущей папки, в которой вы работаете над приложением Mongo или express.