You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 apt update && sudo apt install -y libuuid1
    
    无sudo权限(如Replit免费版环境)时去掉sudo执行:
    apt 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 00:01:05