Как мне обработать эту ошибку TypeError: Невозможно прочитать свойство 'uri' из неопределенного - PullRequest
0 голосов
/ 13 февраля 2020

Добрый день, пожалуйста, у меня возникла следующая ошибка в моем коде в строке 8 на const uri = ... Похоже, что uri const, объявленный в строке 8, выдает ошибку, но я не могу понять, что это такое .

(node:11524) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'uri' of undefined

Я включил приведенный ниже код. Ваш ответ будет оценен.

ПОЛНЫЙ КОД


class URIGenerator {
  getURI(controllerAction, params, id) {
    const caArray = controllerAction.split('_');
    const routeData = RoutesCollection[caArray[0]][caArray[1]];
    const uri = params ? this._bindParams(routeData.uri, params) : routeData.uri; //line 8
    return {
      id: id || routeData.action,
      method: routeData.method,
      uri,
    };
  }

  _bindParams(uri, params) {
    let match;
    let replacement;
    let uriParam = uri;
    const replacedParams = [];

    while (match = /:([\w_]+)\??/ig.exec(uriParam)) {
      replacement = params[match[1]].toString() || '';
      if (replacement === '') {
        uriParam = uriParam.replace(`/${match[0]}`, '');
      } else {
        uriParam = uriParam.replace(match[0], replacement);
        replacedParams.push(match[1]);
      }
    }

    const paramsForQueryString = {};
    Object.keys(params).forEach((p) => {
      if (!replacedParams.includes(p)) {
        paramsForQueryString[p] = params[p];
      }
    });

    if (Object.keys(paramsForQueryString).length > 0) {
      uriParam = `${uriParam}?${queryString.stringify(paramsForQueryString)}`;
    }

    return uriParam;
  }
}

module.exports = URIGenerator;

1 Ответ

0 голосов
/ 13 февраля 2020

Код ошибки на самом деле ясен:

Невозможно прочитать свойство 'uri' из неопределенного

Вы пытаетесь получить доступ к свойству .uri в двух местах, которые оба " routeData.uri ".

Вы определили его как:

const routeData = RoutesCollection[caArray[0]][caArray[1]];

Так что, вероятно, RoutesCollection - это проблема, которая не включена в код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...