Невозможно прочитать свойство "Parser" неопределенной ошибки обещания

Я анализировал некоторые данные через API, мой код для анализа приведен ниже,

  parseXML(data) {
    return new Promise((resolve) => {
      var k: string | number,
        arr = [],
        parser = new xml2js.Parser({
          trim: true,
          explicitArray: true,
        });
      parser.parseString(data, function (err, result) {
        var obj = result.ApiResponse;
        for (k in obj.CommandResponse) {
          var item = obj.CommandResponse[k];
          arr.push({
            info: item.DomainCheckResult[0],
          });
        }
        resolve(arr);
      });
    });
  }

Это мой код парсера, но я все равно получаю консольную ошибку с
core.js:4197 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'Parser' of undefined TypeError: Cannot read property 'Parser' of undefined

Итак, мой вопрос был в том, что не так с кодом? когда я возвращал обещание, что еще я мог сделать? Я возвращаю новое обещание, и после этого я вызвал синтаксический анализатор, так как я могу получить ошибку? Может кто-нибудь помочь мне?


person MD Nasirul Islam    schedule 03.10.2020    source источник
comment
Ну там сказано, что объект xml2js не установлен. Возможно, вам нужно его инициализировать / импортировать. В этом контексте нового ключевого слова недостаточно.   -  person derstauner    schedule 03.10.2020
comment
Я объявил объект, но он все еще не получает данные. ‹Be› Сверху import { xml2js } from 'xml2js';   -  person MD Nasirul Islam    schedule 03.10.2020
comment
Отметьте это сообщение: stackoverflow.com / questions / 53052221 /   -  person derstauner    schedule 04.10.2020
comment
@derstauner Спасибо за ваш комментарий. Ваша ссылка очень полезна. Я решил проблему. ну, в коде была опечатка, в основном это была кома, вот и все.   -  person MD Nasirul Islam    schedule 04.10.2020


Ответы (1)


Что ж, вместо «;» должен быть знак «,». После долгой настройки я, наконец, смог решить проблему.

  parseXML(data) {
    return new Promise((resolve) => {
      var k: string | number,
        arr = [],
        parser = new xml2js.Parser({
          trim: true,
          explicitArray: true,
        });
      // var parser = new xml2js.Parser({ explicitArray: false });
      parser.parseString(data, function (err, result) {
        var obj = result.ApiResponse;
        for (k in obj.CommandResponse) {
          var item = obj.CommandResponse[k];
          arr.push({
            Name: item.DomainCheckResult[0]['$']['Domain'],
            Available: item.DomainCheckResult[0]['$']['Available'],
            PremiumRegistrationPrice:
              item.DomainCheckResult[0]['$']['PremiumRegistrationPrice'],
          });
        }     console.log(JSON.stringify(item.DomainCheckResult));
      });
    });
  }

BTW thank you everyone who tried to help. Ohh and another thing on the top I also did an error on importing the xml2js I also had to change that.

import xml2js from 'xml2js';

person MD Nasirul Islam    schedule 04.10.2020