错误
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对象不可迭代。您可以像这样使用每个键读取JSON对象值。
for(const key in json) {
console.log(json[key]);
}