javascript - 在 ES6 Node.js 中,如何让一个类随处可用?

标签 javascript node.js error-handling ecmascript-6 custom-error-handling

在我的 ES6 Node.js 应用程序中,我有一个包含一堆自定义错误类的文件,即

class FirstCustomError extends Error {
  constructor(message) {
    super(message);
    this.name = "FirstCustomError";
  }
}

class SecondCustomError extends Error {
  constructor(message) {
    super(message);
    this.name = "SecondCustomError";
  }
}

// ...

如何使这些类在应用程序中随处可用?理想情况下,我不必在需要它们的每个文件中都导入它们,也不必求助于 throw new global.errors.FirstCustomError('error message')。 .

也就是说,理想情况下,我可以做 throw new FirstCustomError('error message') .

最佳答案

您确实可以将它们放在the global object上:

global.FirstCustomError = class extends Error {
  constructor(message) {
    super(message);
    this.name = "FirstCustomError";
  }
};

global.SecondCustomError = class extends Error {
  constructor(message) {
    super(message);
    this.name = "SecondCustomError";
  }
};

您需要确保在任何其他模块使用它们之前发生这种情况,即您将其放入主脚本开头需要一次的模块中。更好(更可重用)的方法是将它们从错误模块中正常导出,然后执行
Object.assign(global, require('./errors.js'));

在您的主脚本中将所有导出安装为全局变量。

免责声明:当然,这是一种可怕的做法! 不要那样做!只需在需要它们的任何地方显式导入它们即可。使用 ES6 模块语法轻而易举,它让一切变得更加清晰。此外,您的应用程序中不太可能有如此多的自定义错误,这些错误是真正的横切关注点,并且与特定功能无关,在这种情况下,无论如何您都不应该将它们全部放在同一个模块中。

关于javascript - 在 ES6 Node.js 中,如何让一个类随处可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51768986/

相关文章:

javascript - 为交换 iframe 内容的菜单项动态分配 'sticky' 选定状态

javascript - 允许在输入验证时使用特殊命令

javascript - 将 jquery 中的 css 添加到具有指定类名和文本的元素

javascript - 从 Firebase 更新 NodeJS 的数据

javascript - socketstream 和第 3 方存储库

node.js - 处理NodeJS错误事件?

javascript - 当受让人未定义时如何有条件地设置对象属性

javascript - 带有自定义滚动条(mCustomScrollbar)的自定义选择(Nice select)

mysql - 在sequelize中创建具有循环依赖的表,

python - 将列表字典写入Excel Openpyxl