TypeError:json不可迭代

问题描述 投票:0回答:1

错误

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)

这是我尝试运行自己制作的启动器时遇到的错误。源代码尚未在我的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;
}

我已经玩了一段时间,关于如何解决这个问题的任何想法?我一直在尝试,但是也许可以换上新的眼睛,我们可以一起解决问题。

顺便说一下,这是一个我的世界发射器,具有自动更新和经过修改的jar下载。

javascript java electron
1个回答
0
投票
_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]);
}
© www.soinside.com 2019 - 2024. All rights reserved.