Ошибка типа: json не повторяется - PullRequest
0 голосов
/ 26 апреля 2020

Ошибка

C:\Development\AlphaLauncher-Recode\app\assets\js\loggerutil.js:29 [Launcher] TypeError: json is not iterable
    at DistroIndex._resolveInstances (C:\Development\AlphaLauncher-Recode\app\assets\js\distromanager.js:260)
    at Function.fromJSON (C:\Development\AlphaLauncher-Recode\app\assets\js\distromanager.js:253)
    at Request._callback (C:\Development\AlphaLauncher-Recode\app\assets\js\distromanager.js:327)
    at Request.self.callback (C:\Development\AlphaLauncher-Recode\node_modules\request\request.js:185)
    at Request.emit (events.js:203)
    at Request.<anonymous> (C:\Development\AlphaLauncher-Recode\node_modules\request\request.js:1161)
    at Request.emit (events.js:203)
    at IncomingMessage.<anonymous> (C:\Development\AlphaLauncher-Recode\node_modules\request\request.js:1083)
    at Object.onceWrapper (events.js:291)
    at IncomingMessage.emit (events.js:208)

Это ошибка, которую я получаю, когда пытаюсь запустить созданную мной программу запуска. Исходный код еще не опубликован c на моем github, однако, что мне нужно сделать, это взять индекс распределения из моего выпадающего списка, чтобы позволить загрузчику загрузиться в экземпляре для запуска средства запуска.

Код для запроса и улова.

exports.DistroIndex;

exports.Types = {
    Library: 'Library',
    ForgeHosted: 'ForgeHosted',
    Forge: 'Forge',
    ForgeMod: 'ForgeMod',
    File: 'File',
    VersionManifest: 'VersionManifest'
}

let data = null;

exports.pullRemote = async function(distroURL) {
    return new Promise((resolve, reject) => {
        let opts = {
            url: distroURL,
            timeout: 10000
        }
        request(opts, (error, _resp, body) => {
            if(!error) {
                try {
                    data = DistroIndex.fromJSON(JSON.parse(body));
                    resolve(data);
                } 
                catch (e) {
                    reject(e);
                }
            }
            else {
                reject(error);
            }
        });
    });
}

exports.getDistribution = function() {
    return data;
}

Я уже давно с этим играюсь, есть идеи, как это исправить? Я пытался, но, может быть, с парой глаз sh, мы можем решить проблему вместе.

Кстати, это пусковая установка Minecraft с автоматическими c обновлениями и модифицированными загрузками jar.

1 Ответ

0 голосов
/ 26 апреля 2020
_resolveInstances(json) {
    const arr = [];
    for(let s of json) {
        arr.push(Instance.fromJSON(s));
    }
    this.instances = arr;
}

Ошибка отсюда, for(let s of json) JSON объект не может быть повторяем. Вы можете использовать это для чтения JSON значений объектов на ключ.

for(const key in json) {
    console.log(json[key]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...