5

I was reading some code of a project to learn node.js then I found this line (debug = require('debug')('api:server')) which is enclosed in brackets. As I'm new to programming and when I don't know something I just search it on the web, but I couldn't find an answer for this one. If you are going to tell me to search on the web more aggressively then please tell me HOW too.

1 Answers1

4

require returns the exports of some other module. Here, since debug is being passed into require, the debug module is being required. What this module does is:

debug exposes a function; simply pass this function the name of your module, and it will return a decorated version of console.error for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole.

So

const debug = require('debug')('api:server');

where require('debug') resolves to a function, is like:

const debug = deccorateModule('api:server');

where decorateModule carries out the functionality described above. In this case, require acts as a higher-order function: a function which returns a function. (You may likely have a module named api:server)

This results in the debug variable holding the decorated version of console.error.

CertainPerformance
  • 356,069
  • 52
  • 309
  • 320
  • Although it is another question, this does not play fair with Typescript, and it's highlighted with `Require statement not part of import statement. eslint@typescript-eslint/no-var-requires`. How to correct import this? or just add ignore? This does not works: `import debug = require("debug('api:server')");` – Marcelo Scofano Diniz May 15 '23 at 13:05