Свойство ‘chatServices’ не имеет инициализатора и определенно не назначено в конструкторе

#node.js #typescript

Вопрос:

Привет всем, я пытаюсь создать приложение для чата с помощью getstream.io. У меня есть класс chatservice, и я пытаюсь создать его новый экземпляр для вызова функции getAllmessages, чтобы я мог получать все сообщения с определенного канала. Однако я получаю сообщение об ошибке, в котором говорится, что свойство «chatServices» не имеет инициализатора и определенно не назначено в конструкторе. Может кто-нибудь, пожалуйста, объяснить, что я делаю не так?

 chat.service.ts


import { StreamChat } from 'stream-chat';

import convict from 'convict';
import convictValidator from 'convict-format-with-validator';
import dotenv from 'dotenv';

import { Environment } from './types';

export class ChatService {
  public static masterHealthBotUserId = 'masterHealthBot';

  public  static client = StreamChat.getInstance(
    appConfig.get('getstream').apiKey,
    appConfig.get('getstream').apiSecret,
  );

  /**
   * Creates get stream chat token that can be used by the client to connect to getStream
   * @param userId - User Id
   * @param expiry - expiration time of token. If undefined then token wont expire
   */
  public createToken({ userId, expiry }: { userId: number; expiry?: number }) {
    return ChatService.client.createToken(userId.toString(), expiry);
  }

  public createGetStreamUser({
    userId,
    displayName,
  }: {
    userId: number;
    displayName: string;
  }) {
    return ChatService.client.upsertUser({
      id: userId.toString(),
      name: displayName,
    });
  }

  public createPodChat({
    userId,
    podName,
  }: {
    userId: number;
    podName: string;
  }) {
    const channel = ChatService.client.channel('messaging', podName, {
      name: podName,
      created_by_id: userId.toString(),
      members: [ChatService.masterHealthBotUserId, userId.toString()],
    });
    return channel.create();
  }

  public sendAdminMessage({
    title,
    text,
    podId,
  }: {
    title: string;
    text: string;
    podId: number;
  }) {
    // Title outside attachments needed for push notifications
    // Title inside attachments used for banners within Pods
    return this.getPod(podId.toString()).sendMessage({
      user_id: ChatService.masterHealthBotUserId,
      text,
      title,
      attachments: [
        {
          title,
        },
      ],
    });
  }

  public addUsersToPod(userIds: number[], podId: number) {
    return this.getPod(podId.toString()).addMembers(
      userIds.map((id) => id.toString()),
    );
  }

  public removeUsersFromPod(userIds: number[], podId: number) {
    return this.getPod(podId.toString()).removeMembers(
      userIds.map((id) => id.toString()),
    );
  }


  // Queries for all of users Pods on GetStream
  public queryUsersPods(userId: number) {
    return ChatService.client.queryChannels({
      type: 'messaging',
      members: { $in: [userId.toString()] },
    });
  }

  private getPod(podId: string) {
    return ChatService.client.channel('messaging', podId);
  }

}
 

getallmessage.ts

   import { raw } from 'objection';


import { ChatService } from '@/components/chat/chat.service';



export class GetMessages {

  private chatService: ChatService;

  constructor() {
    this.chatService = new ChatService();
  }




    public async getallmessages(podId: string) {
  const channel = ChatService.client.channel('messaging', podId);
  const messageFilter = { id: { $exists: true } };
  const response = await channel.search(messageFilter);
  console.log(response.results);
  }
const chatServices = new GetMessages();
  chatServices.getallmessages('3');
}