node_modules/@discordjs/opus/prebuild/node-v83-napi-v3-win32-x64-unknown-unknown/opus.node:无效的ELF标头

问题描述

所以我正在制作一个 discord Bot,它将音频从一个语音通道中继到另一个语音通道,但我遇到了一个错误。控制台说它找不到 opus.node 文件,因为我在 GitHub 上托管机器人。因此,我将 module_path 中的 node_modules/@discordjs/opus/package.json 值更改为完全路径。然后它说我必须为 napi_build_version 添加一个替换字符串,所以我做了。然后它给了我另一个错误,说有一个无效的 ELF 标头,并且它找不到 node-opusopusscript

node_modules/@discordjs/opus/prebuild/node-v83-napi-v3-win32-x64-unkNown-unkNown/opus.node: invalid ELF header
(a few console.log lines not from errors)
Error: Cannot find module 'node-opus'
(some other error lines)
Error: Cannot find module 'opusscript'

以下是我认为错误源自的代码

function record(userid,connection){
    const audio = connection.receiver.createStream(userid,{end: 'manual',type: 'opus'})
    const playlist = connection.play(audio,{ type: 'opus' })
}

我从哪里运行函数

voiceChannel.members.forEach((member) => {
        if (member.id !== client.user.id && !ignore.includes(member.id)){
             record(member.id,connection);
        }
    })

以及变量的值是什么:

const voiceChannel = message.member.voice.channel;
const connection = await voiceChannel.join();

注意:我无法在 GitHub 控制台中运行代码(控制台只是一个日志) 如果您有任何问题,请提问。

解决方法

我通过添加解决了我的问题

- run: npm install @discordjs/opus

到上面的.yml文件

- run: node index.js

通过这种方式,它会为其使用的系统安装模块。