What is module.exports?

module.exports is an object in Node.js that is used to define what a module exports.

When you write a module in Node.js, it can expose various functionalities, such as functions, objects, or data, to other modules that require it. module.exports is how you define what should be exposed by your module to the outside world.

For example:

// math.js
function add(a, b) {
    return a + b;

module.exports = add;

In this example, module.exports is used to export the add function. When another module requires math.js, it will be able to access the add function by using require.

module.exports can also be assigned directly to an object, allowing you to export multiple functions or data:

// utils.js
module.exports = {
    add: function(a, b) {
        return a + b;
    subtract: function(a, b) {
        return a - b;

In this case, both the add and subtract functions are exported as properties of the object assigned to module.exports.
The functions can be called from another file like in the following example:

// In index.js
var add = require('./math.js');
var utils = require('./utils.js');
console.log(add(2,3)); // Output: 5
console.log(utils.subtract(5,2)); // Output: 3

Check an online example on Replit

In summary, module.exports is a way to expose the functionality of a module to other modules in Node.js.