Node.js - check if module is installed without actually requiring it
module, node.js, require
Solution
You should use `require.resolve()` instead of `require()`. `require` will load the library if found, but `require.resolve()` will not, it will return the file name of the module.
See the documentation for require.resolve
try {
console.log(require.resolve("mocha"));
} catch(e) {
console.error("Mocha is not found");
process.exit(e.code);
}
require.resolve() does throw error if module is not found so you have to handle it.
Problem
I need to check whether "mocha" is installed, before running it. I came up with the following code: ``` try { var mocha = require("mocha"); } catch(e) { console.error(e.message); console.error("Mocha is probably not found. Try running `npm install mocha`."); process.exit(e.code); } ``` I dont like the idea to catch an exception. Is there a better way?