我正在与一个错误斗争,如果可能的话,我想要一个帮助。我需要从我的路由器发送一个数组:发送/路由:/单词到一个javaScript文件,发送到该路由(“/单词”)一个数组与像(问)。因此,在这条路径(“/ words”)中,我向API请求(ask),然后我可以从数据库中获取它的所有值。错误发送后无法设置标题。 (res.send())
然后我发送一个数组回到所有由“return res.send(array)”开始的文件。好的是工作。但是,我的问题是在数组中有两个单词发送到路由器/路由时开始的,即使请求运行良好,我可以从API获取这些单词的信息(请求,a),当它运行“return res.send(array)”行我有一条消息错误,指出“发送错误后无法设置标题”。
这个解释是否足够理解?
在此先感谢!
router.get("/words", function(req, res) {
var wordsToBeSearched = req.query.str;
var dictionary = [];
for(var i = 0; i < wordsToBeSearched.length; i++) {
var url = "http://www.dictionaryfake.com/api/xml/" + wordsToBeSearched[i];
request(url, function(error, response, body) {
if(!error && response.statusCode == 200) {
parseString(body, function (err, result) {
var word = (JSON.stringify(result["entry_list"]["entry"][0]["ew"][0]));
var sound = (JSON.stringify(result["entry_list"]["entry"][0]["sound"][0]["wav"][0]));
var symbol = (JSON.stringify(result["entry_list"]["entry"][0]["pr"][0]));
var singleWord = {word: word.replace(/"/g,''), symbol: symbol.replace(/"/g,''), sound: sound.replace(/"/g,'')};
dictionary.push(singleWord);
if(i === wordsToBeSearched.length) {
return res.send(dictionary);
};
};
};
};
};
};
我们必须查看代码的相关部分以帮助您解决此错误。这种类型的错误通常在处理异步请求的方式上是错误的,但为了就您需要修复的问题提供建议,我们需要查看您的实际代码。由于您是新手,因此有关代码的***问题必须包含相关代码***。在回答具体问题时,我们大约比使用实际代码时要高出100倍,这比回答可能有数千个可能原因的理论问题要好。 – jfriend00
您在评论中有一些有用的代码,但格式不正确。尝试编辑您的问题并将代码放在问题中。最基本的问题是你在'for'循环中调用'res.send',这意味着它不止一次被调用。 –
然后,请使用您问题下方的“编辑”链接将代码添加到您的问题,然后正确格式化它。无论如何,注释中的多行代码通常是不可读的,代码应该在问题本身中。这里是关于堆栈溢出的[如何格式化代码](https://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)。 – jfriend00