UnhandledPromiseRejectionWarning: TypeError: Невозможно прочитать свойство 'forEach' из неопределенного - PullRequest
0 голосов
/ 04 марта 2020

Мой код:


export const convertToTickerObject = (data) => {
  const keys = [
    'id',
    'last',
    'lowestAsk',
    'highestBid',
    'percentChange',
    'baseVolume',
    'quoteVolume',
    'isFrozen',
    'high24hr',
    'low24hr'
  ];

  const object = {};
  data.forEach((value, i) => {
    if (i === 0) {
      object.name = getCurrencyPairId(value);
      return; //escape arrow function
    }
    const key = keys[i];
    object[key] = value;
  });

  return object;
};

Ошибка:

UnhandledPromiseRejectionWarning: TypeError: Невозможно прочитать свойство 'forEach' из неопределенного UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла из-за того, что внутри асинхронной функции c без блока catch возникла ошибка, или из-за отклонения обещания, которое не было обработано с помощью .catch (). (идентификатор отклонения: 1) (узел: 7188) [DEP0018] Предупреждение об устаревании: отклонения необработанного обещания устарели. В будущем отклонения обещания, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом выхода.

Я пытаюсь использовать async / await, но это предупреждение постоянно происходит.

Как я могу решить это предупреждение? (

1 Ответ

0 голосов
/ 05 марта 2020

Как говорится в ошибке, передаваемый параметр, вероятно, не определен или не является объектом. Попробуйте это:

const convertToTickerObject = (data) => {
  if ( typeof data !== 'object' ){
    return 'Not object. Parameter type: '+ typeof data;
  }
  if( Object.keys(data).length === 0 && data.constructor === Object ){
    return 'object empty';
  }
  const keys = [
    'id',
    'last',
    'lowestAsk',
    'highestBid',
    'percentChange',
    'baseVolume',
    'quoteVolume',
    'isFrozen',
    'high24hr',
    'low24hr'
  ];

  const object = {};
  data.forEach((value, i) => {
    if (i === 0) {
      object.name = getCurrencyPairId(value);
      return; //escape arrow function
    }
    const key = keys[i];
    object[key] = value;
  });

  return object;
};

Это может показать, где ошибка где-то еще. В любом случае было бы хорошо иметь чеки, подобные тем, которые я добавил.

...