我想在 Express 应用程序的不同模块中以全局方式访问 AsyncLocalStorage 的实例。我已经创建了包含 ALS 实例的 Singleton 类(可能还有另一种方法可以做到这一点,但这太过分了?)
index.ts
const { AsyncLocalStorage } = require('async_hooks')
export class Singelton {
private static instance: Singelton;
private asyncLocalStorage: typeof AsyncLocalStorage;
private constructor(){
this.asyncLocalStorage = new AsyncLocalStorage();
}
public static getInstance(): Singelton {
if(!Singelton.instance) {
Singelton.instance = new Singelton();
}
return this.instance;
}
public getAsyncLocalStorage() {
return this.asyncLocalStorage;
}
}
其他.js
const als = Singelton.getInstance().getAsyncLocalStorage();
let trace_id = als.getStore().get("userName")
在 als.getStore().get("userName") 行,我收到错误
TypeError: Cannot read properties of undefined (reading 'get')
这个错误的原因是什么?还没有在 Singleton 中实例化吗?
Typescript 仍然不知道 als 单例实例可以使用哪些方法。您可以创建一个接口并指定单例实例可以使用哪些方法和属性。