You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何无错误安装ffmpeg-binaries?Discord.js依赖安装报错求助

解决discord.js音乐机器人安装ffmpeg-binaries时的权限与编译错误

你遇到的核心问题主要有三个:npm权限不足导致无法创建编译目录lzma-native缺少对应Node版本的预编译包且本地编译依赖缺失,还有discord.js要求的peer依赖未安装。下面是一步步的解决办法:

1. 修复npm权限问题(彻底避免sudo安装)

sudo npm install会把node_modules目录的所有权改成root,后续普通用户操作必然触发权限错误——这就是你报错里EACCES: permission denied的根源。推荐两种解决方式:

方式一:用nvm管理Node.js(最推荐)

nvm能在本地用户环境下管理多个Node版本,完全绕开系统权限问题。你可以通过nvm官方提供的安装方式完成部署(全程不要用sudo),安装后重启终端,再执行以下命令切换到你的目标Node版本:

nvm install 10.15.0
nvm use 10.15.0

之后所有npm包安装都无需sudo,权限问题会直接解决。

方式二:修改全局npm目录权限

如果不想用nvm,也可以把npm的全局安装目录改成你有权限操作的位置:

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'

接着把这个目录添加到你的shell环境变量里(编辑~/.bash_profile~/.zshrc,根据你用的shell选择):

export PATH=~/.npm-global/bin:$PATH

执行source ~/.bash_profile(对应你的配置文件)使修改生效,之后安装包就不用sudo了。

2. 安装本地编译依赖(解决lzma-native编译失败)

报错里提到lzma-native找不到对应Node 10的预编译包,需要本地编译,而macOS上编译Node扩展必须有Xcode命令行工具:

xcode-select --install

按照弹出的提示完成安装,这会提供gcc、make等编译工具,解决node-gyp的配置错误。

3. 重新安装依赖并补全discord.js的peer依赖

先清理之前失败安装的残留文件:

rm -rf node_modules package-lock.json

然后先安装discord.js要求的peer依赖,再安装ffmpeg-binaries:

npm install bufferutil erlpack@discordapp/erlpack node-opus opusscript sodium uws
npm install ffmpeg-binaries

额外优化建议

如果还是遇到lzma-native的问题,你可以尝试用ffmpeg-static替代ffmpeg-binaries——它是更现代的预编译ffmpeg包,几乎不会出现编译问题,更适合discord.js音乐机器人场景:

npm install ffmpeg-static

内容的提问来源于stack exchange,提问作者L. Glen

火山引擎 最新活动