小编Mat*_*ino的帖子

TypeScript 和 NextJs 中跨文件的多个单例实例

最近,我一直在从事一个个人项目,涉及使用 NextJs 和 TypeScript 创建一些 API 端点,这些端点使用 Discord.js 回调 Discord API。如果您从未接触过不和谐 API,请不要被它吓到,我不认为库是问题所在,因此它没有包含在线程标题中。

问题:

我已经为discord.js API 客户端实现了一个单例,因为客户端可能需要大约一两秒的时间来登录和初始化,我不想将时间添加到每个响应中。这在一个文件/端点上效果很好,一旦该文件拥有实例,它就会保留它的实例。但是,一旦我加载另一个文件/端点,它就会创建单例的另一个实例,但是,在它的创建在该文件中再次正常工作之后。

我的问题是我不想要每个文件一个实例,而是想要整个应用程序一个实例。

DiscordClient.ts:

import { Client } from 'discord.js';

class DiscordClient {
    private static discordClient: DiscordClient;
    public APIClient: Client;

    private constructor() {
        this.APIClient = new Client();
        this.APIClient.login($TOKEN);
    }

    public static get Instance() {
        if (!this.discordClient) {
            this.discordClient = new DiscordClient();
        }
        return this.discordClient;
    }
}

export const DiscordClientInstance = DiscordClient.Instance;
Run Code Online (Sandbox Code Playgroud)

注意:令牌只是我的通过不和谐注册的机器人应用程序的唯一令牌的占位符。

/pages/api/test1.ts

import { DiscordClientInstance } from "../../DiscordClient";


export default (req, res) …
Run Code Online (Sandbox Code Playgroud)

singleton node.js typescript next.js discord.js

6
推荐指数
1
解决办法
2154
查看次数

标签 统计

discord.js ×1

next.js ×1

node.js ×1

singleton ×1

typescript ×1