Discord.js与Canvacord运行报错libuuid.so.1无法打开的解决方法
问题根因
该报错由两类问题共同导致:
- 运行环境缺失
node-canvas依赖的系统级组件libuuid,这是Canvacord正常运行的前置要求 - 你的
level.js代码存在未定义变量、未引入依赖的语法错误
解决方案
一、安装系统依赖
根据你的运行环境选择对应操作:
- Replit环境(报错路径包含
/home/runner/可判定为此环境)
在项目根目录新建名为replit.nix的文件,写入如下配置后重启项目:{ pkgs }: { deps = [ pkgs.libuuid pkgs.cairo pkgs.pango pkgs.libjpeg pkgs.giflib pkgs.librsvg ]; } - Debian/Ubuntu 服务器
执行终端命令:sudo apt update && sudo apt install -y libuuid1 libcairo2 libpango1.0-0 libjpeg-dev libgif-dev librsvg2-dev - CentOS/RHEL 服务器
执行终端命令:sudo yum install -y libuuid cairo pango libjpeg-turbo-devel giflib-devel librsvg2-devel
二、修复代码错误
对level.js做三处修改即可正常运行:
- 修正依赖引入:
MessageAttachment未导入会导致生成图片附件时报错,修改首行代码:
const { client, CommandInteraction, MessageEmbed, MessageAttachment } = require("discord.js");
- 修正未定义变量:斜杠命令场景没有全局
message对象,获取触发用户需要用交互对象,修改第13行代码:
let user1 = interaction.user;
- 新增延迟回复避免超时:斜杠命令默认3秒未响应会报错,在
run函数最开头加入如下代码:
await interaction.deferReply();
内容的提问来源于stack exchange,提问作者8less
相关产品推荐
相关产品推荐

