Необработанное предупреждение об ошибке: Ошибка типа: Не удается прочитать свойство «пароль» с нулевым значением

#javascript #node.js #express

Вопрос:

(узел:7152) Необработанное предупреждение об ошибке: Ошибка типа: Не удается прочитать свойство «пароль» с нулевым значением при экспорте.вход (C:UsersnikoDesktopopaacontrollerscontroller.js:39:56) в процессе._tickCallback (внутренний/процесс/next_tick.js:68:7) (узел:7152) Предупреждение о необработанном обещании: Необработанное отклонение обещания. Эта ошибка возникла либо в результате выполнения асинхронной функции без блока catch, либо в результате отклонения обещания, которое не было обработано с помощью .catch(). (идентификатор отклонения: 1)

 const User = require('../model/User');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');

exports.renderHomePage = (req, res, next) => {
    res.render('index') 
};

exports.register = async (req, res, next) => {
    const emailExist = await User.findOne({email: req.body.email});
    //if (emailExist) return res.send('Email Exist')
 
    res.render('register')

    const hash = await bcrypt.genSalt(10);
    const hashPassword = await bcrypt.hash(req.body.pass, hash);

    const user = new User({
        email: req.body.email,
        name: req.body.name,
        password: hashPassword
        })
    try{
        const savedUser = await user.save();
    }catch(err){
        
    }
};

exports.login = async (req, res, next) => {
    const user = await User.findOne({ email: req.body.email1 });
    //if (!user) return res.send("Invalid Email");
    
    email1 = req.body.email1;
    pass1 = req.body.pass1;
    
    res.render('login')

    const validPass = await bcrypt.compare(pass1, user.password);

    res.send("logged in");
    

    const token = jwt.sign({_id: user._id}, process.env.TOKEN);
    res.header('auth-token', token).send();

};
 

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

1. (узел:11672) Предупреждение о необработанном обещании: Отказ от необработанного обещания. Эта ошибка возникла либо в результате выполнения асинхронной функции без блока catch, либо в результате отклонения обещания, которое не было обработано с помощью .catch(). (идентификатор отклонения: 1)

2. поместите блок try catch в промежуточное программное обеспечение для входа со следующим вызовом : try{ …. } поймать(ошибка) { далее(ошибка) }

3. Он не может найти пользователя по электронной почте в вашей функции входа в reg.body.email1 систему . Тело не содержит email1 ? Пользователь не существует?

Ответ №1:

Не забудьте использовать пакет bodyParser, чтобы ваше тело стало читаемым.

https://www.npmjs.com/package/body-parser