Posted On January 13, 2022

How to remove anything in default error response in loopback node Js?

Ghazal Ehsan 0 comments
Hut Explore >> Technology , Programming >> How to remove anything in default error response in loopback node Js?
nodejs

In LoopBack, default error status response is :

{
   "error":{
      "statusCode":401,
      "name":"Error",
      "message":"Authorization Required",
      "code":"AUTHORIZATION_REQUIRED",
      "stack":"Error: Authorization Required\n    at /var/www/project/loopback-mysql/node_modules/loopback/lib/application.js:430:21\n    at /var/www/project/loopback-mysql/node_modules/loopback/lib/model.js:358:7\n    at /var/www/project/loopback-mysql/node_modules/loopback/common/models/acl.js:529:16\n    at /var/www/project/loopback-mysql/node_modules/async/dist/async.js:3888:9\n    at /var/www/project/loopback-mysql/node_modules/async/dist/async.js:473:16\n    at iteratorCallback (/var/www/project/loopback-mysql/node_modules/async/dist/async.js:1064:13)\n    at /var/www/project/loopback-mysql/node_modules/async/dist/async.js:969:16\n    at /var/www/project/loopback-mysql/node_modules/async/dist/async.js:3885:13\n    at /var/www/project/loopback-mysql/node_modules/loopback/common/models/acl.js:511:17\n    at /var/www/project/loopback-mysql/node_modules/loopback/common/models/role.js:434:21\n    at process._tickCallback (internal/process/next_tick.js:61:11)"
   }
}

Step-by-step guide:

Following steps involved to remove any index in default error response in loopback:

  1. Create middleware.json in server folder, if it is not already created.
  2. Default middleware.json is like this:
{
  "initial:before": {
    "loopback#favicon": {}
  },
  "initial": {
    "compression": {},
    "cors": {
      "params": {
        "origin": true,
        "credentials": true,
        "maxAge": 86400
      }
    }
  },
  "session": {},
  "auth": {},
  "parse": {},
  "routes": {
    "loopback#rest": {
      "paths": [
        "${restApiRoot}"
      ]
    }
  },
  "files": {
    "loopback#static": {
      "params": "$!../client"
    }
  },
  "final": {
    "loopback#urlNotFound": {}
  },
  "final:after": {
    "loopback#errorHandler": {}
  }
}

3. Open middleware.json file and add the following code in “final:after” object.

"./middleware/error-logger": {},

4. Now the middleware.json code is like this:

{
  "initial:before": {
    "loopback#favicon": {}
  },
  "initial": {
    "compression": {},
    "cors": {
      "params": {
        "origin": true,
        "credentials": true,
        "maxAge": 86400
      }
    }
  },
  "session": {},
  "auth": {},
  "parse": {},
  "routes": {
    "loopback#rest": {
      "paths": [
        "${restApiRoot}"
      ]
    }
  },
  "files": {
    "loopback#static": {
      "params": "$!../client"
    }
  },
  "final": {
    "loopback#urlNotFound": {}
  },
  "final:after": {
     "./middleware/error-logger": {},
     "loopback#errorHandler": {}
  }
}

5. Now create the file error-logger.js in server/middleware.
6. Open the error-logger.js file and write the following code:

module.exports = function createErrorLogger(options) {
    return function logError(err, req, res, next) {
       delete err['details'];
       delete err['stack'];
       next(err);
    };
};

In the above code, only remove details and stack index from the error response. Now the default error response is like this:

{   
    "error": {
        "statusCode": 401,
        "name": "Error",
        "message": "Authorization Required",
        "code": "AUTHORIZATION_REQUIRED"
    }
}

https://medium.com/@ghazaltaimur27/how-to-remove-anything-in-default-error-response-in-loopback-node-js-7a8395d515f8

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

What is the MERN Stack

The MERN stack is a popular JavaScript-based technology stack used for developing web applications. It…

How To Add Login Authentication to React Applications

How To Add Login Authentication to React Applications To add login authentication to a React…

Apple stops signing iOS 15.2, blocking downgrade from iOS 15.2.1

Apple stops signing iOS 15.2, blocking downgrade from iOS 15.2.1 Following the arrival of iOS…