Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么expressjs在空闲时为PUT生成ERR\u EMPTY\u响应?_Javascript_Express_Middleware_Put - Fatal编程技术网

Javascript 为什么expressjs在空闲时为PUT生成ERR\u EMPTY\u响应?

Javascript 为什么expressjs在空闲时为PUT生成ERR\u EMPTY\u响应?,javascript,express,middleware,put,Javascript,Express,Middleware,Put,当前 我有一个本地运行的express服务器,用于管理来自react客户端的请求 问题 当我的客户机空闲时(我假设在客户机之前执行服务器操作之后),大约3-5分钟后,控制台日志中会出现错误消息 错误消息: 这会导致下一个客户端放入服务器失败,即数据未保存 请求 我在中间件管理方面没有太多经验,因此希望您能帮助我诊断可能导致此错误的原因 可能有帮助的注意事项: 有时,当客户机向服务器输入太多数据时,数据无法保存,但没有错误消息。我被迫重新加载页面 从客户端提取-App.js saveData=d

当前

我有一个本地运行的express服务器,用于管理来自react客户端的请求

问题

当我的客户机空闲时(我假设在客户机之前执行服务器操作之后),大约3-5分钟后,控制台日志中会出现错误消息

错误消息:

这会导致下一个客户端放入服务器失败,即数据未保存

请求

我在中间件管理方面没有太多经验,因此希望您能帮助我诊断可能导致此错误的原因

可能有帮助的注意事项:

  • 有时,当客户机向服务器输入太多数据时,数据无法保存,但没有错误消息。我被迫重新加载页面
  • 从客户端提取-App.js

    saveData=data=>{
    log(“提交保存请求…”);
    获取(“/api/v1/savedata”{
    方法:'放',
    标题:{
    “接受”:“应用程序/json”,
    “内容类型”:“应用程序/json”
    },
    正文:JSON.stringify(数据)
    })
    。然后(console.log(“保存完成!”);
    };
    
    从Server.js中提取:

    //保存客户端数据的api端点
    app.put('/api/v1/savedata',(req,res)=>{
    log('服务器收到保存数据的请求');
    让选项={
    文件:'./data/save.json',
    更改:请求正文
    }
    updateJsonFile(选项);
    });
    
    如果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
    });
    

    我猜您在put指令中缺少res.send()。因此,3-5分钟通常是浏览器的超时时间。就是这样。我需要通过.json()或send()或end()结束会话。谢谢,就是这样。我需要通过.json()或send()或end()结束会话。非常感谢。