从其他模块访问Discord.Client实例。

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

我想知道是否有任何方法可以访问一个。Discord.Client 的实例。

我试过的。

posts.js

const express = require('express')
const router = express.Router()

router.post('/checkRole', function (req, res) {
    const guild = client.guilds.find(guild => guild.id === '688678156374044803');
    let member = guild.members.get(req.body.id); // member ID
    // Here I get an error which says the 'guild' is undefined.
    res.send(response);
});

module.exports = router

索引.js

const Discord = require("discord.js");
global.client = new Discord.Client();
const express = require('express');

const postsRoute = require('./routes/posts')

app = express()
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use('/posts', postsRoute)

/*  ... some other code ... */

client.login(config.token);

app.listen(8080);

module.exports = { client }

我也试过类似的方法,比如 这个 但也没有成功。最后我试着把客户机实例存储为全局变量,但还是没有成功。有什么方法可以实现这一点吗?

javascript express client discord.js
1个回答
0
投票

看来问题不在于你不能正确导出客户端,而在于你想使用它的代码在客户端还没有准备好的时候就运行了:事实上,你得到的错误是说没有找到与 .find 方法,但这意味着客户机有了自己的 .guilds 财产和a .find 方法。客户端是存在的,问题是你的代码运行在 ready 事件被触发:为了避免这种情况,你可以要求你的模块内的 ready 事件处理程序。下面是一个例子。

// index.js
client.on('ready', () => {
  const postsRoute = require('./routes/posts')

  let app = express()
  app.use(express.urlencoded({ extended: true }))
  app.use(express.json())
  app.use('/posts', postsRoute)

  app.listen(8080);
})
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.