Search code examples
javascriptnode.jserror-handlingcustom-error-handling

Can I export/require a module in Node.js to be used without a var holding its objects?


I am creating my own error library to have a custom catalog of specific and well documented errors to return on my API. I am doing something like this:

module.exports = CError;

function CError () {
}

// CUSTOM ERROR TYPES
CError.EmptyParamError = createErrorType(...);
CError.InvalidFormatError = createErrorType(...);

A sample of how I use my custom error types right now:

CError = require('cerror');

if(!passwd)
    callback(new CError.EmptyParamError(passwd, ...));

I will use this errors through my entire project and I wish to have a cleaner code like this: (without the CError reference)

if(!passwd)
    callback(new EmptyParamError(passwd, ...);

Is there a way to export the module or to require it that allows me to do this?

I googled without finding any answer, I also checked all this interface design patterns for Node.js modules but no one applies.


Solution

  • You can set it as a global, though as always when using globals, beware of the side-effects.

    EmptyParamError = createErrorType(...);
    

    That's it. Just leave off the var keyword, and don't set it as a property.