TypeError: cb is not a function in nodejs?

(node:13384) UnhandledPromiseRejectionWarning: TypeError: cb is not a function

I am using passport js for authentication for my website, I am able to get all routes but when I try to sign up that is post router so in the console I am seeing these err, my data saved in DB but after posting my page loading continuously. here these err what I am getting

(node:13384) UnhandledPromiseRejectionWarning: TypeError: cb is not a function at C:UsersSBCSDesktopAppBlognode_modulespassport-local-mongooseindex.js:247:59 at processTicksAndRejections (internal/process/task_queues.js:93:5) (Use node --trace-warnings ... to show where the warning was created) (node:13384) 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(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1) (node:13384) [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.

and here is my post router code


    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)=>{
passport.authenticate("local" )(req,res, function (){


and here is my mongoose connection

    mongoose.connect('mongodb://localhost:27017/blog', {useNewUrlParser: true, useUnifiedTopology: true,useFindAndModify: false}).catch(err => console.log(err))


when I am getting err node js referring me this modules code see here

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));

}; this is passport-local-mongoose module code


i got answer

this cause by

User.register( {username:username}, req.body.email,req.body.password ,(err,user)=>{ if(err){

line of code and after spending more time on it,I got some solution solution is here

User.register({username: req.body.username}, req.body.password, function(err, user){

also if you want to send user name you can send it like this

User.register({username: req.body.username,name: req.body.registerName}, req.body.password, function(err, user){

thanks …..

Source: stackoverflow