【问题标题】:Image Manipulation Discord.js: No Such file or dictionary图像处理 Discord.js:没有这样的文件或字典
【发布时间】:2021-03-26 17:28:45
【问题描述】:

我正在尝试使用 discord.js 制作一个 Discord Bot,但每次我尝试运行该命令时,它都会返回一条错误消息:

UnhandledPromiseRejectionWarning: Error: ENOENT, No such file or directory './background.jpg'

这是我的代码:

const Discord = require('discord.js');
const Canvas = require('canvas')

module.exports = {
    name: 'level',
    description: 'Level command.',
    execute: async (message, client) => {
        const canvas = Canvas.createCanvas(700, 250);

        const ctx = canvas.getContext('2d')
        const background = await Canvas.loadImage('./background.jpg')
        ctx.drawImage(background, 0, 0, canvas.width, canvas.height)

        const attachment = new Discord.MessageAttachment(canvas.toBuffer(), 'image.png')

        message.channel.send(attachment)
    }
}

我的文件和文件夹的图像:

【问题讨论】:

  • 首先,您确定在同一文件目录中有一个名为 background.jpg 的文件吗?您也可以使用 try catch 块来处理承诺拒绝。

标签: javascript node.js discord.js image-manipulation


【解决方案1】:

您的图像文件似乎在同一个文件夹中。也许尝试使用绝对路径。您可以使用path 模块的resolve() 方法将__dirname 和文件名解析为绝对路径。像这样使用它会起作用:

const Discord = require('discord.js');
const Canvas = require('canvas');
const path = require('path');

module.exports = {
  name: 'level',
  description: 'Level command.',
  execute: async (message, client) => {
    const canvas = Canvas.createCanvas(700, 250);

    const ctx = canvas.getContext('2d');
    const background = await Canvas.loadImage(
      path.resolve(__dirname, './background.jpg'),
    );
    ctx.drawImage(background, 0, 0, canvas.width, canvas.height);

    const attachment = new Discord.MessageAttachment(
      canvas.toBuffer(),
      'image.png',
    );

    message.channel.send(attachment);
  },
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2022-09-30
    • 2012-01-15
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    相关资源
    最近更新 更多