我有两个文件-/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'));
...
}
答案 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语句中。