在 ES6 Node.js 中,如何使 class 随处可用?
In ES6 Node.js, how do I make a class available everywhere?
在我的 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')
。
您可以将它们添加到 运行 的第一个 js 文件中,例如 app.js,并确保它们在全局范围内,以便它们可以从任何地方重复使用,但它们是必不可少的是 运行 首先,所以当其他代码试图调用它们时它们存在
global.customErrFunc = class FirstCustomError extends Error {
constructor(message) {
super(message);
this.name = "FirstCustomError";
}
}
throw new customErrFunc('Custom error')
通常要使 class 可访问,您需要像这样导出它:
exports.NameOfFunction = async (req, resp) =>{..... your code};
不需要异步!只是如果您需要等待 Promise 的完整响应
希望对您有所帮助!
你确实可以把它们放在 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 模块语法轻而易举,它使一切都更加清晰。此外,您的应用程序中不太可能有如此多的自定义错误,这些错误是真正的跨领域问题,并且与特定功能无关,在这种情况下,无论如何您都不应该将它们全部放在同一个模块中。
正如其他发帖者所建议的那样,您要实现的目标是 可能,但不是 推荐。理想的方法是将它们导出到模块中,然后在需要的地方导入模块。
customErrors.js
export.modules.FirstCustomError = FirstCustomError
export.modules.SecondCustomError = SecondCustomError
我知道这不是您要找的,但固执己见的发展有时是好的。 global
在模块化环境中工作时,赋值是一种非常不受欢迎的做法。您可以通过导入在代码中使用它们。
import { FirstCustomError } from './customErrors.js'
在我的 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')
。
您可以将它们添加到 运行 的第一个 js 文件中,例如 app.js,并确保它们在全局范围内,以便它们可以从任何地方重复使用,但它们是必不可少的是 运行 首先,所以当其他代码试图调用它们时它们存在
global.customErrFunc = class FirstCustomError extends Error {
constructor(message) {
super(message);
this.name = "FirstCustomError";
}
}
throw new customErrFunc('Custom error')
通常要使 class 可访问,您需要像这样导出它:
exports.NameOfFunction = async (req, resp) =>{..... your code};
不需要异步!只是如果您需要等待 Promise 的完整响应 希望对您有所帮助!
你确实可以把它们放在 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 模块语法轻而易举,它使一切都更加清晰。此外,您的应用程序中不太可能有如此多的自定义错误,这些错误是真正的跨领域问题,并且与特定功能无关,在这种情况下,无论如何您都不应该将它们全部放在同一个模块中。
正如其他发帖者所建议的那样,您要实现的目标是 可能,但不是 推荐。理想的方法是将它们导出到模块中,然后在需要的地方导入模块。
customErrors.js
export.modules.FirstCustomError = FirstCustomError
export.modules.SecondCustomError = SecondCustomError
我知道这不是您要找的,但固执己见的发展有时是好的。 global
在模块化环境中工作时,赋值是一种非常不受欢迎的做法。您可以通过导入在代码中使用它们。
import { FirstCustomError } from './customErrors.js'