我在 express.js 中有以下代码
// POST api/posts/:id
exports.post = function(req, res){
req.body[0].id = posts.length + 1;
posts.push(req.body[0]);
console.log(posts);
fs.writeFileSync("json/posts.json", JSON.stringify(posts));
setTimeout(function(){
res.set.apply(res, utils.contentType);
res.json(req.body[0]);
}, utils.randomNumberBetween(1000, 3000));
};
当我发布一个简单的 json 对象时,我收到以下错误。
org.apache.http.NoHttpResponseException: localhost:9000 failed to respond
如果我删除 settimeout,一切都会按预期进行。我在其他地方使用过 settimeout,如下所示:
// GET api/posts
exports.get = function(req, res){
setTimeout(function(){
res.set.apply(res, utils.contentType);
res.json(posts);
}, utils.randomNumberBetween(1000, 3000));
};
所以我不明白为什么它会在发布时中断。有什么想法吗??
最佳答案
这是因为发出请求的应用程序希望在一定时间内(比如 5 秒)收到 express 的响应。如果它没有收到任何回复,它就会认为出了什么问题。要解决此问题,您可以做的一件事是更改“发送/请求”应用程序等待/监听响应的时间。
关于javascript - 为什么settimeout会破坏Expressjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39908813/