Как решить TypeError: Невозможно преобразовать «ноль» в int - PullRequest
0 голосов
/ 15 марта 2020

j'ai комментирует код без разногласий msi c bot et voici l'erreur que j'ai Trouvé: TypeError: Невозможно преобразовать «ноль» в int.

function play(connection, message){
                var server = servers[message.guild.id];

                server.dispatcher = connection.play(ytdl(server.queue[0], {filter: "audioonly"}));

                server.queue.shift();

                server.dispatcher.on("end", function(){
                    if(server.queue[0]){
                        play(connection, message);
                    }else {
                        connection.disconnect();
                    }
                })



            }           

Сообщение об ошибке, которое я получаю от тестера:

    TypeError: Cannot convert "null" to int
    TypeError: Cannot convert "null" to int
    Error: "abort(TypeError: Cannot convert "null" to int). Build with -s ASSERTIONS=1 for more info."
    at (anonymous) (file:///c:/Users/pc/Documents/Discord%20Bot/node_modules/opusscript/build/opusscript_native_wasm.js:8:1741) 
    at emit (events.js:311:19)

Прошу вас, пожалуйста, помогите мне. Спасибо.

1 Ответ

0 голосов
/ 02 мая 2020

У меня может быть решение вашей проблемы!

ОБНОВЛЕНИЕ:

После этого ответа и моего сообщения об ошибке prism-media выпустила исправленную версию. Спасибо за такое быстрое решение! Сохранение текста ниже в качестве справочного.

TL; DR

Найти Opus. js в папке node_modules и go в строке 55. Вы должны увидеть следующее:

return this.encoder.encode(buffer, Opus.name === 'opusscript' ? null : this._options.frameSize);

ИЗМЕНИТЬ ЕГО:

return this.encoder.encode(buffer, this._options.frameSize);

Затем удалить ту же деталь в строке 59.

Пояснение

  1. Исключение выдается в toWireType в opusscript_native_wasm. js, который ожидает, что его вторым аргументом будет int, но он получает null. Следовательно, исключение.

  2. Отслеживая его, toWireType вызывается OpusScriptHandler.encode для всех его аргументов.

  3. Эти четыре аргумента приходят от OpusScript.prototype.encode в opusscript.js:69. Последний аргумент, вызывающий проблему (null): ` frameSize .

  4. Функция encode вызывается из Opus.js:55 в призме -media , который является другим модулем.

return this.encoder.encode(buffer, Opus.name === 'opusscript' ? null : this._options.frameSize);

Вот оно, null вызывает все неприятности. Таким образом, исключение на самом деле не является ошибкой пакета opusscript.

Долгосрочные решения

I сообщили об ошибке владельцу модуля, надеюсь, она будет исправлена. Обновление: исправлено за несколько часов! :)

Альтернативное решение

Использование пользовательского загрузчика также должно работать нормально. Это все еще хак, но более настойчивый:)

...