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

Replit运行play命令时报@discordjs/opus相关Cannot find module错误

报错原因

该报错本质是@discordjs/opus没有匹配Replit运行环境的预编译二进制文件:本地开发环境的架构、Node版本、glibc版本对应有预构建的opus.node文件,因此运行正常,而Replit的Linux环境下缺失对应版本的预构建原生文件,因此抛出找不到模块的错误。

排查解决步骤
  • 方案1:强制从源码编译原生模块
    在Replit的控制台执行以下命令,让@discordjs/opus在当前环境直接编译生成匹配的原生文件:

    npm rebuild @discordjs/opus --build-from-source
    

    编译完成后重新启动服务测试即可,Replit的Node环境默认自带gcc、make等编译工具,一般可直接完成编译。

  • 方案2:替换为纯JS实现的opus兼容包
    如果你不想处理原生编译问题,可以用纯JS实现的opusscript替换@discordjs/opus,绝大多数Discord音乐播放库都原生兼容该包,无需修改业务代码:
    先卸载原依赖:

    npm uninstall @discordjs/opus
    

    再安装兼容包:

    npm install opusscript
    
  • 方案3:对齐Node.js版本
    报错中node-v93对应Node.js 16.x版本,如果你的Replit环境使用的Node版本和本地测试版本不一致,可以在Replit的项目配置中将Node版本切换为和本地一致的16.x系列,重新安装依赖后测试。

  • 方案4:清理缓存重装依赖
    若上述方案无效,可先删除项目下的node_modules文件夹和package-lock.json文件,再执行npm install重新安装所有依赖,避免缓存导致的依赖安装不全问题。

注意事项
  • 纯JS实现的opusscript性能弱于原生的@discordjs/opus,如果你的机器人需要同时处理多个播放任务,优先选择方案1编译原生模块使用。
  • 若编译原生模块时提示缺少编译工具,可在项目的replit.nix配置文件的buildInputs中添加gcc、make等编译依赖。

内容的提问来源于stack exchange,提问作者FinallyComplete

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:36:05