почему expressjs генерирует ERR_EMPTY_RESPONSE для PUT во время простоя? - PullRequest
1 голос
/ 11 мая 2019

В настоящее время

У меня есть экспресс-сервер, который я запускаю локально для управления запросами от реагирующего клиента.

Проблема

Когда мой клиент находится в режиме ожидания (я предполагаю, что после действий клиента PUT сервера ранее), примерно через 3-5 минут в журналах консоли появляются сообщения об ошибках.

Сообщение об ошибке:

enter image description here

Это приводит к сбою следующего PUT клиента на сервере, т.е. данные не сохраняются.

Запрос

У меня нет большого опыта в управлении промежуточным программным обеспечением, поэтому буду признателен за помощь в диагностике того, что может быть причиной этой ошибки.

Примечания, которые могут быть полезны:

  1. иногда, когда клиент делает слишком много 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);
});

1 Ответ

1 голос
/ 11 мая 2019

вы не отправили никакого ответа в 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
});
...