猿问

为什么expressjs在空闲时会为PUT生成ERR_EMPTY_RESPONSE?

现在

我有一个本地运行的Express服务器,用于管理来自React Client的请求。

问题

当我的客户端处于空闲状态时(我假设客户端PUT服务器之前已进行了操作),大约3-5分钟后,错误消息出现在控制台日志中。

错误信息:

这将导致服务器的下一个客户端PUT失败,即未保存数据。


要求


我在中间件管理方面没有太多经验,因此希望获得一些有关如何诊断可能导致此错误的帮助。


可能有用的注意事项:


有时,当客户端对服务器进行过多的PUT时,数据将无法保存,但是不会出现错误消息。我被迫重新加载页面。

从客户端提取-App.js


  saveData = data => {

    console.log("Submitting request to save...");

    fetch('/api/v1/savedata', {

      method: 'PUT',

      headers: {

        'Accept': 'application/json',

        'Content-Type': 'application/json'

      },

      body: JSON.stringify(data)

    })

    .then(console.log("Save complete!"));

  };

从Server.js中提取:


// An api endpoint that saves data from the client

app.put('/api/v1/savedata', (req,res) => {

  console.log('Server received request to saveData');

  let options = {

    files: './data/save.json',

    changes: req.body

  }

  updateJsonFile(options);

});


四季花海
浏览 199回答 1
1回答

幕布斯7119047

您没有在API中发送任何响应,请使用res.send或res.json类似这样:app.put('/api/v1/savedata', (req,res) => {  console.log('Server received request to saveData');  let options = {    files: './data/save.json',    changes: req.body  }  updateJsonFile(options);  res.json({data: data}) // if you want to send json response  // Note: please don't send response object more than once});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答