簡體   English   中英

類型錯誤:json 不可迭代

[英]TypeError: json is not iterable

錯誤

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 下載。

_resolveInstances(json) {
    const arr = [];
    for(let s of json) {
        arr.push(Instance.fromJSON(s));
    }
    this.instances = arr;
}

從這里出錯, for(let s of json) JSON object 不能迭代。 您可以像這樣使用每個鍵讀取 JSON object 值。

for(const key in json) {
    console.log(json[key]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM