Search code examples
node.jsrequire

Detect if called through require or directly by command line


How can I detect whether my Node.JS file was called using SH:node path-to-file or JS:require('path-to-file')?

This is the Node.JS equivalent to my previous question in Perl: How can I run my Perl script only if it wasn't loaded with require?


Solution

  • if (require.main === module) {
        console.log('called directly');
    } else {
        console.log('required as a module');
    }
    

    See documentation for this here: https://nodejs.org/docs/latest/api/modules.html#modules_accessing_the_main_module