从单独的文件中调用另一个常量

时间:2019-08-12 23:42:05

标签: javascript discord.js

我试图调用存储在我ready.js文件中的常量musicSettings,但是似乎无法导出它。在我的ready.js文件中(此位置必须存在,因为这是我可以访问this.client的唯一位置之一)

const { Listener } = require('discord-akairo');
const { Client: Lavaqueue } = require('lavaqueue');
const { ClientID } = require('../config');

class ReadyListener extends Listener {
    constructor() {
        super('ready', {
            emitter: 'client',
            eventName: 'ready'
        });
    }
    exec() {
        process.stdout.write(`[>] Running in ${this.client.guilds.size} servers.\n`);
    }
}

const musicSettings = new Lavaqueue({
    userID: ClientID,
    password: 'g6Z0xRLbiTHq',
    hosts: {
        rest: 'http://127.0.0.1:2333',
        ws: 'ws://127.0.0.1:2333',
        redis: { host: 'localhost' },
    },
    send(guildID, packet) {
        this.client.ws.send(packet)
    },
});

module.exports = ReadyListener;

位于play.js文件中的代码(不起作用,因为我无法从ready.js文件中导入musicSettings)

    async exec(message, args) {
        var channel = message.member.voiceChannel;
        if (!channel) {
            return message.reply('you need to be in a voice channel to play music.')
        } else if (!args.video) {
            return message.reply('you need to provide a link or search for a video.')
        }
        const song = await musicSettings.load(args.video);
        const queue = musicSettings.queues.get(`${message.guild.id}`);
        await queue.player.join(`${message.member.voiceChannel.id}`);
        await queue.add(...song.tracks.map(s => s.track));
        await queue.start();
    }
}

1 个答案:

答案 0 :(得分:1)

musicSettings导出ready.js实例:

module.exports = { ReadyListener, musicSettings };

然后将其导入play.js

const { musicSettings } = require('./ready');

然后您就可以在musicSettings中引用play.js

请注意,由于ready.js现在正在导出项,因此要导入ReadyListener,您将必须使用与导入{{1 }},例如:

musicSettings

或者,如果您想一次导入两者:

const { ReadyListener } = require('./ready');