在 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 {
这意味着 整个模块 ,当 require
d 时,评估为 =
另一侧的内容 - 即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
。
我有两个文件 - /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 {
这意味着 整个模块 ,当 require
d 时,评估为 =
另一侧的内容 - 即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
。