Могу ли я экспортировать / требовать, чтобы модуль в Node.js использовался без переменной, содержащей его объекты?

Я создаю свою собственную библиотеку ошибок, чтобы иметь собственный каталог специфических и хорошо документированных ошибок, чтобы вернуться в мой API. Я делаю что-то вроде этого:

module.exports = CError;

function CError () {
}

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

Пример того, как я сейчас использую свои собственные типы ошибок:

CError = require('cerror');

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

Я буду использовать эти ошибки во всем проекте и хочу иметь более чистый код, подобный этому: (без CError ссылка)

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

Есть ли способ export модуль или require это то, что позволяет мне сделать это?

Я погуглил, не найдя ответа, я также проверил все эти шаблоны проектирования интерфейсов для модулей Node.js, но никто не применим.

2 ответа

Решение

Вы можете установить его как глобальный, хотя, как всегда, при использовании глобалов, остерегайтесь побочных эффектов.

EmptyParamError = createErrorType(...);

Вот и все. Просто оставьте ключевое слово var и не устанавливайте его как свойство.

Если это только один или два типа, вы можете пропустить CError переменная, как это:

var EmptyParamError = require('cerror').EmptyParamError;

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

Если у вас есть несколько типов в одном файле, будет несколько require('cerror') заявления, но я считаю, что там нет существенного снижения производительности, потому что (если я правильно понимаю) Node будет кэшировать его в первый раз.

Другие вопросы по тегам