javascriptnode.js

Check if a node.js module is available


I'm looking for a way to find out if a module is available.

For example, I want to check if the module mongodb is available, programmatically.

Also, it shouldn't halt the program if a module isn't found, I want to handle this myself.

PS: I added this question because Google isn't helpful.


Solution

  • Before you upvote: Thanks! But really, go upvote this answer by Jakob hanging at the bottom of this page right now, because in 2025 (and for years now really) this is no longer the best answer. Jakob's is. It is in fact the ONLY answer that is still relevant today, unless you are stuck with require for some reason. Javascript has native modules now and Node JS and the browsers and basically everything supports them. Use it!

    -------

    DEPRECATED

    There is a more clever way if you only want to check whether a module is available (but not load it if it's not):

    function moduleAvailable(name) {
        try {
            require.resolve(name);
            return true;
        } catch(e){}
        return false;
    }
    
    if (moduleAvailable('mongodb')) {
        // yeah we've got it!
    }