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

Discord.js v14使用Data URL发送文件附件失败求助

问题

我需要发送一段长文本,打算以文件形式发送,但免费版Heroku没法创建本地文件,于是想用Data URL实现,结果代码运行报错。

我的代码:

//(slash command builder, ... , execute(interaction){)
    const File_ = { attachment: "data:text/text;charset=UTF-8;base64,4p2k77iO", name: "data.txt" };
    await interaction.reply({files: [File_] });

错误信息:

Error: ENOENT: no such file or directory, stat 'C:\(project folder)\data:text\text;charset=UTF-8;base64,4p2k77iO'] {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'stat',
  path: 'C:\(project folder)\data:text\text;charset=UTF-8;base64,4p2k77iO'
}

解决方法

Discord.js的attachment字段不支持直接传入Data URL,它会把你写的Data URL当成本地文件路径去查找,所以才会抛出找不到文件的错误。

你可以把Base64编码的内容转换成Buffer对象,再传给attachment,这样不需要本地文件就能发送:

//(slash command builder, ... , execute(interaction){)
    // 将Base64字符串解码为Buffer
    const contentBuffer = Buffer.from("4p2k77iO", "base64");
    const File_ = { attachment: contentBuffer, name: "data.txt" };
    await interaction.reply({files: [File_] });

这种方式直接用内存中的Buffer作为附件,完美适配Heroku免费版无法创建本地文件的限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:51:40