首页 > 解决方案 > Discord.js 错误 Fontconfig 错误:无法加载默认配置文件

问题描述

我在 Ultrax 视频中看到了这种情况,但是代码不起作用,它应该在新人进入服务器时发送欢迎图像,有人可以帮我修复代码吗?

代码:

registerFont('./font/OpenSans-Bold.ttf', { family: 'Open Sans' })
const canvas = createCanvas(500, 500)
const Canvas = require('canvas');

var welcomeCanvas = {};
welcomeCanvas.create = Canvas.createCanvas(1024, 500)
welcomeCanvas.context = welcomeCanvas.create.getContext('2d')
welcomeCanvas.context.font = '72px OpenSans-Bold';
welcomeCanvas.context.fillStyle = '#ffffff';

Canvas.loadImage("./img/Teste.png").then(async (img) => {
welcomeCanvas.context.drawImage(img, 0, 0, 1024, 500)
welcomeCanvas.context.fillText("Testando boas vindas", 360, 360);
welcomeCanvas.context.beginPath();
welcomeCanvas.context.arc(512, 166, 128, 0, Math.PI * 2, true);
welcomeCanvas.context.stroke()
welcomeCanvas.context.fill()
})

require('ultrax').inviteLogger(client)

client.on('guildMemberAdd', async member => {
const welcomechannel = Client.channels.cache.get('794293128600879125')
let canvas = welcomeCanvas;
canvas.context.font = '42px OpenSans-Bold';
canvas.context.textAling = 'center';
canvas.context.fillText(member.user.tag.toUpperCase(), 512, 410)
canvas.context.font = '32px OpenSans-Bold';
canvas.context.fillText(Você é o ${member.guild.memberCount} Tenno em nosso servidor, 512, 455)
canvas.context.beginPath()
canvas.context.arc(512, 166, 119, 0, Math.PI * 2, true)
canvas.context.closePath()
canvas.context.clip()
await Canvas.loadImage(member.user.displayAvatarURL({format: 'png', size: 1024}))
.then(img => {
canvas.context.drawImage(img, 393, 47, 238, 238);
})
let atta = new Discord.MessageAttachment(canvas.create.toBuffer(), Bem vindo ${member.id}.png)
try {
welcomechannel.send(Olá Tenno ${member}, bem vindo ao ${member.guild.name}!, atta)
} catch (error) {
console.log(error)
}
});```

标签: node.jsdiscord.js

解决方案


我认为问题在于您需要在使用代码中的某些功能之前加载 Canvas。我已经在下面修复了您的代码。如果这不能解决问题,请检查您的字体文件是否真的在您尝试从中加载它的目录中。如果您使用某种处理程序,则可能会更改目录(尽管看起来不是那样)。

const Canvas = require('canvas');
const canvas = Canvas.createCanvas(500, 500)
Canvas.registerFont('./font/OpenSans-Bold.ttf', { family: 'Open Sans' })

var welcomeCanvas = {};
welcomeCanvas.create = Canvas.createCanvas(1024, 500)
welcomeCanvas.context = welcomeCanvas.create.getContext('2d')
welcomeCanvas.context.font = '72px OpenSans-Bold';
welcomeCanvas.context.fillStyle = '#ffffff';

Canvas.loadImage("./img/Teste.png").then(async (img) => {
    welcomeCanvas.context.drawImage(img, 0, 0, 1024, 500)
    welcomeCanvas.context.fillText("Testando boas vindas", 360, 360);
    welcomeCanvas.context.beginPath();
    welcomeCanvas.context.arc(512, 166, 128, 0, Math.PI * 2, true);
    welcomeCanvas.context.stroke()
    welcomeCanvas.context.fill()
})

require('ultrax').inviteLogger(client)

client.on('guildMemberAdd', async member => {
    const welcomechannel = client.channels.cache.get('794293128600879125')
    let canvas = welcomeCanvas;
    canvas.context.font = '42px OpenSans-Bold';
    canvas.context.textAling = 'center';
    canvas.context.fillText(member.user.tag.toUpperCase(), 512, 410)
    canvas.context.font = '32px OpenSans-Bold';
    canvas.context.fillText(Você é o ${member.guild.memberCount} Tenno em nosso servidor, 512, 455)
    canvas.context.beginPath()
    canvas.context.arc(512, 166, 119, 0, Math.PI * 2, true)
    canvas.context.closePath()
    canvas.context.clip()
    await Canvas.loadImage(member.user.displayAvatarURL({format: 'png', size: 1024}))
        .then(img => {
            canvas.context.drawImage(img, 393, 47, 238, 238);
           })
    let atta = new Discord.MessageAttachment(canvas.create.toBuffer(), Bem vindo ${member.id}.png)
    try {
        welcomechannel.send(Olá Tenno ${member}, bem vindo ao ${member.guild.name}!, atta)
    } catch (error) {
        console.log(error)
    }
});

推荐阅读