Могу ли я экспортировать / требовать, чтобы модуль в 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 будет кэшировать его в первый раз.