获取 AsyncLocalStorage 实例时出现 TypeError

问题描述 投票:0回答:1

我想在 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 中实例化吗?

node.js typescript express async-hooks
1个回答
0
投票

Typescript 仍然不知道 als 单例实例可以使用哪些方法。您可以创建一个接口并指定单例实例可以使用哪些方法和属性。

© www.soinside.com 2019 - 2024. All rights reserved.