问题描述
我想知道是否有任何方法可以在 Node.JS 的 process
模块上声明事件侦听器。即能够在一个文件中全局定义适用于整个项目的事件侦听器。
例如:我希望能够侦听流程模块的 on(exit)
事件以在流程退出之前执行一些日志记录,并使用提到的或默认的 exitCode
(这是在一个单独的文件中我会打电话给process.exit()
if(!process.env.TELEGRAM_TOKEN) {
process.exit(100);
}
并且我在另一个模块中将侦听器声明为:
process.on("exit",(code) => {
switch(code) {
case 100:
console.error(`${code} - ${NO_API_KEYS}`);
break;
default:
console.error(`${code} - ${DEFAULT_EXIT_ERROR}`)
}
});
问题是 - 它以代码 100
退出,但它从未记录在事件侦听器上定义的 console.error()
。
解决方法
您的模块似乎没有被加载,因此永远不会运行代码来注册 exit
事件的事件处理程序。
要运行其初始化代码,您只需从主应用模块或作为应用初始化一部分的任何其他模块导入模块。
import './mymodule.js'