在 import 语句中使用解构

Using destructuring within import statement

我有两个文件 - /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'));

    ...
}

当你这样做时

module.exports = class BroadcasterEmbed extends RichEmbed {

这意味着 整个模块 ,当 required 时,评估为 = 另一侧的内容 - 即class。不要试图解构,相反,只需要简单的 class:

const BroadcasterEmbed = require('../')

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

module.exports.BroadcasterEmbed = class...

然后

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

Broadcaster.js 应该有这个导入语句:

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

class 处于根级别。你不需要解构。您正试图从自身中解构 class。

您还需要将明确的文件名放在 require 语句中,因为 class 的文件名不是 index.js