【发布时间】:2019-03-04 06:26:34
【问题描述】:
我正在尝试制作一个具有“猜数字游戏”功能的不和谐机器人。
当我运行机器人时,它给了我这个错误:
致命错误:接近堆限制的无效标记压缩分配失败 - JavaScript 堆内存不足
似乎 while 循环变成了无限循环。这是我的代码(声明了所有函数和变量)
while (numberOfGuesses < 5) {
const collector = new Discord.MessageCollector(message.channel, m => m.author.id === message.author.id, {
time: 10000,
max: 1
});
collector.on('collect', message => {
if (guess.length == 0 || !guessInRange(guess)) {
message.channel.send('please say 1~100');
} else {
if (parseInt(guess) == secretNumber) {
message.channel.send('Boom! Correct!');
return collector.stop();
} else if (parseInt(guess) < secretNumber) {
numberOfGuesses++;
message.channel.send('Too small');
collector.stop();
} else {
numberOfGuesses++;
message.channel.send('Too big');
collector.stop();
}
if (numberOfGuesses == 5) {
collector.stop();
return message.channel.send('Game over');
}
}
});
}
【问题讨论】:
-
没有什么会阻塞执行,所以每次迭代都会将一个新的收集器添加到堆栈中。然后,您的内存不足。在循环之外声明收集器将很快解决您的问题,但您可能希望使用不同的方法。如果其他人没有帮助,我会在第二个详细说明。
标签: javascript while-loop discord.js