【问题标题】:Cannot read property 'Parser' of undefined promise error无法读取未定义承诺错误的属性“解析器”
【发布时间】:2020-10-03 10:38:19
【问题描述】:

我正在通过 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

所以我的问题是代码有什么问题?当我返回一个承诺时,我还能做什么?我正在返回一个新的承诺,然后我调用了解析器,那么我怎么会出错呢? 谁能帮帮我?

【问题讨论】:

  • 嗯,它说 xml2js 对象没有设置。也许你必须初始化它/导入它。在这种情况下,新关键字还不够。
  • 我已经声明了对象,但仍然没有获取数据。 顶上import { xml2js } from 'xml2js';
  • @derstauner 感谢您的评论。你的链接很有帮助。我确实解决了这个问题。好吧,代码上有一个拼写错误,主要是昏迷而已。

标签: javascript angular xml2js


【解决方案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));
      });
    });
  }

顺便说一句,感谢所有试图提供帮助的人。哦,还有一件事,我在导入 xml2js 时也犯了一个错误,我也不得不改变它。

import xml2js from 'xml2js';

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 2019-03-10
    • 2020-05-13
    • 2016-08-22
    • 2021-04-18
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多