在导入语句中使用解构

时间:2019-04-16 00:39:27

标签: javascript discord.js

我有两个文件-/utils/BroadcasterEmbed.js/commands/broadcaster.js。目标是将BroadcasterEmbed.js导入broadcaster.js。但是,当我测试以下代码时,出现以下错误TypeError: BroadcasterEmbed is not a constructor

考虑到我遇到的开源实现,我知道这是可能的。我想念什么吗?

BroadcasterEmbed.js

const { RichEmbed } = require('discord.js');

module.exports = class BroadcasterEmbed extends RichEmbed {
    constructor(data = {}) {
        super(data);
    }
}

broadcaster.js

const { BroadcasterEmbed } = require('../')

exports.run = (client, message, args) => {
    ...

    message.channel.send(new BroadcasterEmbed().setDescription('hello'));

    ...
}

2 个答案:

答案 0 :(得分:1)

这样做的时候

module.exports = class BroadcasterEmbed extends RichEmbed {

这意味着整个模块require d时将求值到=另一侧的内容-即类。不要尝试破坏结构,而只需要简单的类:

const BroadcasterEmbed = require('../')

如果您将类分配给原始module.exports对象的属性,则可以使用解构,例如:

module.exports.BroadcasterEmbed = class...

然后

const { BroadcasterEmbed } = require('../')

答案 1 :(得分:0)

Broadcaster.js应该具有以下导入状态:

const BroadcasterEmbed = require('../BroadcasterEmbed.js')

该类在根级别。您不需要破坏。您正在尝试使类脱离自身结构。

由于包含该类的文件名不是index.js,因此您还需要将显式文件名放在require语句中。