Функция .drawImage выдает «Ошибка типа: ожидается изображение или холст» для canvas - PullRequest
2 голосов
/ 17 октября 2019

Я пытаюсь добавить карту ранга в мой диск-бот, и для этого я пытаюсь использовать холст, но когда я использую холст, все работает нормально, пока я не использую метод .drawImage. Где это дает мне сообщение об ошибке «Ошибка типа: ожидается изображение или холст». Хотя мне уже требуется («холст») глобально, и все остальное, что связано с холстом, также работает должным образом.

Я пытался требовать («холст») внутри функции, но это неТакже не могу решить проблему.

    const canvas = Canvas.createCanvas(934, 282);
    const ctx = canvas.getContext('2d');
    const background = Canvas.loadImage('./images/Rank_Card.jpg');

    ctx.drawImage(background, 0, 0, canvas.width, canvas.height);  
    const attachment = new Discord.Attachment(canvas.toBuffer(), 'welcome-image.png');
    msg.channel.send(`Testing...`, attachment);

Когда он отправляет сообщение, он должен прикрепить к нему изображение, но сейчас он просто дает мне следующую ошибку.

Ошибка:

C:\Users\Desktop\Discord\iBot\ibot.js:25
    ctx.drawImage(background, 0, 0, canvas.width, canvas.height);
        ^

TypeError: Image or Canvas expected

1 Ответ

3 голосов
/ 17 октября 2019

node-canvas 'loadImage() метод возвращает Promise, которое разрешается в <Image>.

Вы не можете передать это обещание напрямую, вам придется ждать для него:

const canvas = Canvas.createCanvas(934, 282);
const ctx = canvas.getContext('2d');
// we need to await the Promise gets resolved since loading of Image is async
const background = await Canvas.loadImage('./images/Rank_Card.jpg');

ctx.drawImage(background, 0, 0, canvas.width, canvas.height);  
const attachment = new Discord.Attachment(canvas.toBuffer(), 'welcome-image.png');
msg.channel.send(`Testing...`, attachment);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...