如何无错误安装ffmpeg-binaries?Discord.js依赖安装报错求助
你遇到的核心问题主要有三个: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




