discord.js中require引入canvacord报libuuid.so.1缺失错误
问题背景
开发discord.js项目时,使用如下语句引入canvacord依赖:
const Canvas = require("canvacord")
程序运行后抛出错误:
Error: libuuid.so.1: cannot open shared object file: No such file or directory at Object.Module._extensions..node (node:internal/modules/cjs/loader:1183:18) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Module.require (node:internal/modules/cjs/loader:1005:19) at require (node:internal/modules/cjs/helpers:102:18) at Object.<anonymous> (/home/runner/bot/node_modules/canvas/lib/bindings.js:3:18) at Module._compile (node:internal/modules/cjs/loader:1101:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10) at Module.load (node:internal/modules/cjs/loader:981:32) Hint: hit control+c anytime to enter REPL.
故障原因
canvacord底层依赖node-canvas原生模块,该模块需要调用Linux系统级的动态链接库,报错原因是当前运行环境缺少libuuid.so.1这个系统库文件,导致原生模块加载失败。从报错路径/home/runner/判断,运行环境大概率是Replit平台。
修复方法
根据你使用的Linux发行版执行对应命令安装缺失依赖即可:
- Debian/Ubuntu 系(含WSL、Ubuntu容器、Replit环境):
有sudo权限时执行:
无sudo权限(如Replit免费版环境)时去掉sudo执行:sudo apt update && sudo apt install -y libuuid1apt update && apt install -y libuuid1 - CentOS/RHEL/Rocky Linux 系:
# CentOS7及以下版本用yum yum install -y libuuid # CentOS8及以上、Rocky Linux用dnf dnf install -y libuuid - Alpine Linux 系:
apk add libuuid
如果安装完libuuid后仍然报其他.so文件缺失,是node-canvas所需的全套系统依赖没有装全,Debian/Ubuntu系直接执行以下命令安装全部依赖:
sudo apt install -y build-essential libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libjpeg-dev libgif-dev librsvg2-dev
依赖安装完成后,回到项目根目录执行npm rebuild canvas重新编译canvas原生模块,重启项目即可正常运行。
内容的提问来源于stack exchange,提问作者watch channel
相关产品推荐
相关产品推荐

