【发布时间】:2021-12-08 04:38:28
【问题描述】:
我想在不完全使用 nodemon 或 node . 重新启动机器人的情况下更新我的命令代码这是我尝试使用的代码:
const { glob } = require('glob')
const { promisify } = require('util')
const globPromise = promisify(glob);
await client.commands.clear()
const commandFiles = await globPromise(`${process.cwd()}/commands/**/*.js`);
commandFiles.map((value) => {
const file = require(value);
const splitted = value.split("/");
const directory = splitted[splitted.length - 2];
if (file.name) {
const properties = { directory, ...file };
client.commands.set(file.name, properties);
}
})
结果显示我的代码有效,但命令没有更新,我该如何解决? 以防万一:我的 djs 版本是 v13.2.0
【问题讨论】:
-
NodeJS 正在缓存来自
require()的脚本执行结果(也称为要求缓存)。您应该清除此缓存。也许这个答案会对你有所帮助:node.js require() cache - possible to invalidate? -
这对您的情况有用吗? stackoverflow.com/q/24666696/15325967
-
@insyri 他想重新加载命令而不重新加载应用程序。所以他应该在这种情况下清除缓存并再次使用
require重新加载命令。 -
啊,我明白了,我认为具体目标是远程更新命令。
-
@koloml 有帮助,但是有没有办法从
client.commands获取命令并一一更新,或者使用 fs 获取命令? (我不知道如何使用 fs 来做到这一点,因为我在commands文件夹中有类别文件夹)
标签: javascript node.js discord discord.js bots