当我向我的nodejs服务器发出多个post请求并且所有参数都正确时,一切正常(并且没有冻结)但是当我使用不正确的参数发出多个post请求时会出错,我的nodejs服务器只是冻结/挂了几分钟。这是为什么?
这是我的代码btw
var btn = document.getElementById("btn")
btn.addEventListener("click", function(){
// Check if element contains disabled class
if (btn.classList.contains("disabled")) {
// Removes disabled class
btn.classList.remove("disabled");
// Adds waves-effect and waves-light classes
btn.classList.add("waves-effect", "waves-light");
}
});
答案 0 :(得分:4)
遇到错误时,您的节点服务器不知道除console.log()
错误之外的其他操作。它需要结束该请求并发送一些响应。当你陷入困境时,你可以res.status(400).send({ error: err })
。
答案 1 :(得分:0)
确保每次在您的请求中调用res.send()
方法。
更新了Javascript:
app.post('/pushtransaction', function(req, res) {
console.log(req.body);
console.log(5);
if (req.body.sigs) {
let sigver = xmf.modules.ecc.Signature.from(req.body.sigs).toString();
let lasig = [sigver];
console.log(req.body.packedTr);
let transi = JSON.parse(req.body.packedTr);
//let sigver = req.body.sigs;
let package = {
compression: 'none',
transaction: transi,
signatures: lasig
}
console.log(package);
//Pushes tx in correct format
xmf.pushTransaction(package).then(result=>{
res.send(result);
res.end();
console.log(result);
}).catch(err => {
console.log(err);
res.status(400).send();
});
}
res.status(400).send();
})
此外,如果拨打res.end()
,则无需致电res.send()
。见Must res.end() be called in express with node.js?
答案 2 :(得分:0)
除了其他答案之外,如果任何服务在一段时间内无法响应,您可以为超时添加中间件,例如
var timeout = require('connect-timeout');
app.use(timeout('5s'));