You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js+Axios调用报错:TypeError: Cannot read properties of undefined (reading 'ephemeral')

问题分析与解决方案

错误原因

你遇到的TypeError: Cannot read properties of undefined (reading 'ephemeral'),本质是getRandomCat()函数没有返回有效的Promise或回复内容,而是返回了undefined。因为axios.get是异步操作,你的getRandomCat函数没有正确返回异步操作的结果,导致interaction.reply()接收到undefined,Discord.js在处理这个无效参数时抛出了错误。

修正方案

方案1:使用async/await重构代码

将getRandomCat改为异步函数,并在execute中等待它的结果:

const { SlashCommandBuilder } = require('discord.js');
const axios = require('axios');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('cat2')
        .setDescription('Random cat'),
    async execute(interaction) {
        try {
            const catUrl = await getRandomCat();
            await interaction.reply(catUrl);
        } catch (err) {
            console.error('err: ', err);
            await interaction.reply('获取猫咪图片失败了😢');
        }
    },
};

async function getRandomCat() {
    const res = await axios.get('https://api.thecatapi.com/v1/images/search');
    return res.data[0].url;
}

方案2:让函数返回Promise

如果不想用async/await,也可以让getRandomCat直接返回axios.get的Promise,然后在execute中处理:

const { SlashCommandBuilder } = require('discord.js');
const axios = require('axios');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('cat2')
        .setDescription('Random cat'),
    async execute(interaction) {
        getRandomCat()
            .then(catUrl => interaction.reply(catUrl))
            .catch(err => {
                console.error('err: ', err);
                interaction.reply('获取猫咪图片失败了😢');
            });
    },
};

function getRandomCat() {
    return axios.get('https://api.thecatapi.com/v1/images/search')
        .then(res => res.data[0].url);
}

关键说明

  • 异步函数必须正确返回Promise或使用await等待结果,否则会传递undefined给interaction.reply,引发Discord.js的内部错误。
  • 添加错误处理逻辑,避免请求失败时机器人无响应或报错。

内容的提问来源于stack exchange,提问作者ellen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:20:14