在测试过程中,如果使用邮递员作为测试机,我的用户的注册路线是否工作正常,它会抛出一个错误,我不知道这是什么意思。

我尝试使用异步函数来捕获错误,但是没有解决

const express = require('express');
const router = express.Router();
// Use to help set a default image for users
const gravatar = require('gravatar');
// Use to encrypt our password from bringing plain text
const bcrypt = require('bcryptjs');

// I add the user model from my model
// So i can be able to check create a new registration
// and also check if email exist
const User = require('../../models/User');


// @route   GET api/users/register
// @desc    Register user
// @access  Public
router.post('/register', (req, res) => {

  User.findOne({ email: req.body.email }).then(user => {
    if (user) {
      errors.email = 'Email already exists';
      return res.status(400).json(errors);
    } else {
      const avatar = gravatar.url(req.body.email, {
        s: '200', // Size
        r: 'pg', // Rating
        d: 'mm' // Default
      });

      const newUser = new User({
        name: req.body.name,
        email: req.body.email,
        avatar,
        password: req.body.password
      });

      bcrypt.genSalt(10, (err, salt) => {
        bcrypt.hash(newUser.password, salt, (err, hash) => {
          if (err) throw err;
          newUser.password = hash;
          newUser
            .save()
            .then(user => res.json(user))
            .catch(err => console.log(err));
        });
      });
    }
  });
});


module.exports = router;


我希望邮递员上的用户输入应该能够发布该表单,以便我知道路由是否真的正常运行。这是我在控制台上遇到的错误

(node:14164) UnhandledPromiseRejectionWarning: ReferenceError: errors is not defined
    at User.findOne.then.user (the working director/name.js:26:7)
    at process._tickCallback (internal/process/next_tick.js:68:7)
(node:14164) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:14164) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

最佳答案

通常,我们应该以这种方式处理错误:

 User.findOne({ email: req.body.email }).then(user => {
   // ...
 }).catch(error => {
    console.log('error', error)
    res.json({error: error})
 })

关于node.js - 我的注册路线有误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56344173/

10-09 20:32