我可以 export/require Node.js 中的模块在没有 var 保存其对象的情况下使用吗?

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

我正在创建自己的错误库,以便在我的 API 上为 return 提供一个自定义的特定错误和有据可查的错误目录。我正在做这样的事情:

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 它允许我这样做?

我用谷歌搜索没有找到任何答案,我也检查了所有这些 interface design patterns for Node.js modules 但没有人适用。

您可以将其设置为全局变量,但一如既往地使用全局变量时,请注意副作用。

EmptyParamError = createErrorType(...);

就是这样。只需省略 var 关键字,不要将其设置为 属性.

如果只有一两种类型,可以跳过CError变量,像这样:

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

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

如果您在一个文件中有多种类型,将会有多个 require('cerror') 语句,但我相信这不会对性能造成重大影响,因为(如果我理解正确的话)Node 会在第一时间对其进行缓存。