Ошибка выброса PouchDB.sync: ETIMEDOUT часто - PullRequest
1 голос
/ 10 марта 2019

Я обнаружил, что при медленном сетевом соединении и больших документах / вложениях PouchDB.sync выдаст ошибку тайм-аута: ETIMEDOUT!

Мой код прост, просто синхронизируйте данные из удаленного CouchDB в локальный браузер PouchDB.

this._getDBServer()
                .then(db => {
                    return db.sync(dbLocalURL)
                })
                .then(result => {
                    log.debug('%s:sync ok',label,result)
                    resolve(true)
                })
                .catch(e => {
                    log.warn('%s:sync error:',label,e)
                    resolve(false)
                })

И doc на PouchDB.com может частично решить эту проблему.В соответствии с документом, я настраиваю два параметра «batch_size», «batch_limit» на 1, и результат лучше, я получил меньше ошибок, но не могу удалить их полностью.

Я отслеживал исходный код, его здесь выдается ошибка:

    if (xhr.status >= 200 && xhr.status < 300) {
  var data;
  if (options.binary) {
    data = createBlob([xhr.response || ''], {
      type: xhr.getResponseHeader('Content-Type')
    });
  } else {
    data = xhr.responseText;
  }
  callback(null, response, data);
} else {
  var err = {};
  if (timedout) {
    err = new Error('ETIMEDOUT');
    err.code = 'ETIMEDOUT';
  } else if (typeof xhr.response === 'string' && xhr.response !== '') {
    try {
      err = JSON.parse(xhr.response);
    } catch (e) {}
  }

  err.status = xhr.status;

  callback(err);
}

значение тайм-аута здесь является значением по умолчанию: 10000, если я напрямую изменяю значение тайм-аута на 60000, то ошибкане будет выдаваться, поэтому я думаю, что проблема в том, что в моих документах слишком много вложений для синхронизации, это приведет к превышению времени ожидания в медленной сети.

Так, как я могу решить эту проблему?Есть ли другой способ избежать ошибки?Или я должен установить таймаут XHR дольше?Если это так, где это правильное место для установки?

Моя версия PouchdDB: 6.4.3 Моя версия CouchDB: 2.1.2

...