#javascript #node.js #mongodb #mongoose #error-handling
Вопрос:
(узел:13384) Необработанное предупреждение об ошибке: Ошибка типа: cb не является функцией
Я использую passport js для аутентификации на своем веб-сайте, я могу получить все маршруты, но когда я пытаюсь зарегистрироваться, это маршрутизатор post, поэтому в консоли я вижу эти ошибки, мои данные сохраняются в БД, но после публикации моя страница непрерывно загружается. вот эти ошибаются в том, что я получаю
(узел:13384) Необработанное предупреждение об ошибке: Ошибка типа: cb не является функцией в C:UsersSBCSDesktopAppBlognode_modulespassport-local-mongooseindex.js:247:59 в процедурных и проекциях (внутренний/процесс/task_queues.js:93:5) (Используется
node --trace-warnings ...
, чтобы показать, где было создано предупреждение) (узел:13384) Необработанное обещание Предупреждение: Необработанное обещание отклонение. Эта ошибка возникла либо в результате включения асинхронной функции без блока catch, либо в результате отклонения обещания, которое не было обработано с помощью .catch(). Чтобы завершить процесс узла при отклонении необработанного обещания, используйте флаг CLI--unhandled-rejections=strict
(см. https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (идентификатор отклонения: 1) (узел:13384) [DEP0018] Предупреждение об устаревании: Необработанные отклонения обещаний считаются устаревшими. В будущем отказы в обещаниях, которые не будут обработаны, приведут к прекращению Node.js процесс с ненулевым кодом выхода.
а вот мой почтовый код маршрутизатора
app.post("/sign-up",(req,res)=>{
const username = req.body.username
const email = req.body.email
const password = req.body.password
User.register( {username:username}, req.body.email,req.body.password ,(err,user)=>{
if(err){
console.log(err);
res.redirect("/sign-up")
}else{
passport.authenticate("local" )(req,res, function (){
res.redirect('/compose')
})
}
})
и вот моя связь с мангустом
mongoose.connect('mongodb://localhost:27017/blog', {useNewUrlParser: true, useUnifiedTopology: true,useFindAndModify: false}).catch(err => console.log(err))
mongoose.set('useCreateIndex',true);
Спасибо
когда я получаю ошибку, узел js отсылает меня к этому коду модулей, смотрите здесь
schema.statics.register = function(user, password, cb) {
// Create an instance of this in case user isn't already an instance
if (!(user instanceof this)) {
user = new this(user);
}
const promise = Promise.resolve()
.then(() => {
if (!user.get(options.usernameField)) {
throw new errors.MissingUsernameError(options.errorMessages.MissingUsernameError);
}
})
.then(() => this.findByUsername(user.get(options.usernameField)))
.then(existingUser => {
if (existingUser) {
throw new errors.UserExistsError(options.errorMessages.UserExistsError);
}
})
.then(() => user.setPassword(password))
.then(() => user.save());
if (!cb) {
return promise;
}
promise.then(result => cb(null, result)).catch(err => cb(err));
};
это код модуля passport-local-мангуст
Комментарии:
1. спасибо , но все равно сейчас я тоже начинаю ошибаться
2. ты получаешь
err
… то жеerr
самое ? или по-другомуerr
?3. сэр, я получаю ту же ошибку, что и раньше
4. пока ничего не изменится, показывая ошибку, я читал API и использовал, но он также показывает ошибку.
5. сэр, я добавил еще немного кода, посмотрим, пойму ли я что-нибудь
Ответ №1:
я получил ответ
this cause by
User.register( {имя пользователя:имя пользователя}, req.body.email,req.body.пароль ,(ошибка,пользователь)=>{
если(ошибка){
строка кода,и, потратив на это больше времени, я нашел какое-то решение, решение здесь
User.register({username: req.body.username}, req.body.password, function(err, user){
также, если вы хотите отправить имя пользователя, вы можете отправить его следующим образом
User.register({username: req.body.username,name: req.body.registerName}, req.body.password, function(err, user){
Спасибо…..