nodemon 应用程序崩溃 - 在从服务器获得响应后启动错误之前等待文件更改

nodemon app crashed - waiting for file changes before starting error after geting response from server

我正在用 Node JS 开发服务器,其中有两条路线 - 登录和注册

每当我注册时,我都会收到成功的响应,并且数据已成功存储在 MongoDB 数据库中,然后我会收到 [nodemon] 应用程序崩溃 - 等待文件开始前的更改... 在我的控制台中。

注意:-“问题仅出在注册中,不在登录中”。

postSignup() 当用户请求根据模式验证并插入数据库的注册时将被调用。 我正在提供与注册相关的代码。

signup.js

const { User } = require("../../models");
const createError = require("http-errors");

const postSignup = (req, res, next) => {
  //validation
  const validation = User.validate(req.body);

  if (validation.error) {
    const error = new Error(validation.error.message);
    error.statusCode = 400;
    return next(error);
  }

  //check Existence

  const user = new User(req.body);
  user
    .checkExistence()
    .then((result) => {
      if (result.check) {
        const error = new Error(result.message);
        error.statusCode = 409;
        return next(error);
      }

      user.save((err) => {
        if (err) {
          console.log(err);
          return next(createError(500));
        }

      res.status(201).json({
          message: "User has been Successfully Created",
        });
      });
    })
    .catch((err) => {
      next(createError(500));
    });
};

module.exports = {
  postSignup,
};

User.js

const { dbCon } = require("../configuration");
const { userValidator, logSchema } = require("../validator");
const { hashSync, compareSync } = require("bcryptjs");

class User {
  constructor(userData) {
    this.userData = { ...userData };
  }

  save(cb) {
    dbCon("users", (db) => {
      try {
        const hashPass = hashSync(this.userData["password"], 12);
        this.userData["password"] = hashPass;
        db.insertOne(this.userData);
        cb();
      } catch (err) {
        cb(err);
      }
    });
  }

  checkExistence() {
    return new Promise((resolve, reject) => {
      dbCon("users", async (db) => {
        try {
          const user = await db.findOne({
            $or: [
              { username: this.userData["username"] },
              { email: this.userData["email"] },
            ],
          });

          if (!user) {
            resolve({
              check: false,
            });
          } else if (this.userData["username"] === user.username) {
            resolve({
              check: true,
              message: "username already exists",
            });
          } else if (this.userData["email"] === user.email) {
            resolve({
              check: true,
              message: "email already exists",
            });
          }
        } catch (err) {
          reject(err);
        }
      });
    });
  }
  static validate(userData) {
    //console.log(userData);
    return userValidator.validate(userData);
  }

module.exports = User;

userValidator.js

const Joi = require("@hapi/joi");

const schema = Joi.object({
  username: Joi.string().alphanum().required().min(3).max(15),
  email: Joi.string().email().required(),
  password: Joi.string()
    .pattern(
      new RegExp(
        "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$"
      )
    )
    .message(
      "Password must contain at least eight characters, at least one number and both lower and uppercase letters and special characters"
    )
    .required(),
  first_name: Joi.string().required(),
  last_name: Joi.string().required(),
});


module.exports = {
  schema
};

我遇到了同样的问题。我不知道是什么问题,但我尝试更改 mongo db connect 中的节点版本,然后使用新的连接 URL.

如果还是不行,那就尝试创建新的集群,再和新的集群连接起来。