错误:字符串格式无效 | const 命令 = require(`${file}`);

Fla*_*nko 2 discord.js

我已经尝试了很多方法但仍然没有成功...

这是错误:

Error: Invalid string format
    at Object.run (/home/runner/discordgame-1/node_modules/@sapphire/shapeshift/dist/index.js:1281:64)
    at /home/runner/discordgame-1/node_modules/@sapphire/shapeshift/dist/index.js:113:66
    at Array.reduce (<anonymous>)
    at StringValidator.parse (/home/runner/discordgame-1/node_modules/@sapphire/shapeshift/dist/index.js:113:29)
    at validateName (/home/runner/discordgame-1/node_modules/@discordjs/builders/dist/index.js:885:17)
    at MixedClass.setName (/home/runner/discordgame-1/node_modules/@discordjs/builders/dist/index.js:957:5)
    at Object.<anonymous> (/home/runner/discordgame-1/commands/ping.js:5:6)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
Run Code Online (Sandbox Code Playgroud)

代码:

for (const file of commandFiles) {
    const command = require(`${file}`);
    commands.push(command.data.toJSON());
  client.commands.set(command.data.name, command);
}
Run Code Online (Sandbox Code Playgroud)

${file}const command = require( );肯定有问题。

我第一次使用stackoverflow,因为我真的找不到解决方案。

如果您想了解有关此问题的更多信息,请询问我。

nul*_*ull 5

我在研究discordjs时遇到了同样的问题。我试图创建一些不和谐的命令,问题是我在 中为命令选择的名称setName(),我使用的是大写字母:

module.exports = {
    data: new SlashCommandBuilder()
        .setName('membersQuantity') // the uppercase Q is the problem
        .setDescription('members quantity'),
    async execute(interaction) {
        await interaction.reply('test');
    },
};
Run Code Online (Sandbox Code Playgroud)

所以我只是改变了它:

module.exports = {
    data: new SlashCommandBuilder()
        .setName('membersquantity') //no uppercase characters anymore
        .setDescription('members quantity'),
    async execute(interaction) {
        await interaction.reply('test');
    },
};
Run Code Online (Sandbox Code Playgroud)

它解决了我的问题。

斜杠命令的名称中可能有更多不允许的字符,因此我建议始终仅使用小写字符。