admin管理员组

文章数量:814781

未定义带有xmljs GLOBAL的笑话测试

当前我正在使用]编写应用程序>

  • NodeJS v13.12.0
  • 笑话25.4.0
  • xmljs 0.3.2
  • 打字稿3.8.3
  • 笑话25.4.0
  • 此应用程序应模仿CalDAV服务器。因此,我依赖于xmljs模块,这是(在我研究之后)唯一给我直接用于在XML中查找属性的path方法的模块。

在节点容器中,该应用程序运行正常,没有任何错误。但是,当我使用Jest启动测试时,测试失败并显示以下错误

ReferenceError: GLOBAL is not defined
      at node_modules/xmljs/core.js:46:2
      at Object.<anonymous> (node_modules/xmljs/core.js:176:3)
      at node_modules/xmljs/XmlParser.js:3:11
      at Object.<anonymous> (node_modules/xmljs/XmlParser.js:204:3) 

[我现在知道,此错误源自尝试设置GLOBAL变量的xmljs模块,该变量在NodeJS中解析为global。但这并不是开玩笑。

我的代码如下所示:

import XmlParser = require("xmljs");

/*
* data is the body of a PROPFIND request
*/
new XmlParser({ strict: true }).parseString(data, (err, xmlNode) => {
    // omit err
    xmlNode.path(["propfind", "prop"], true);

    const propertiesObj: XmlNode[] = childs[0].children;
    const properties: string[] = [];

    Object.keys(propertiesObj).forEach(n => {
        properties.push(n);
    });

    logger.silly("Returning properties: %O", properties);
});

谁可以

  1. 向我显示要使用的模块,而无需大量修改我的代码

    • 哪个支持纯js实现而不使用node-gyp(因为它可以在Windows服务器上使用)
  2. 向我展示如何通过变通办法来欺骗在xmljs中设置的GLOBAL变量

  3. 感谢您的帮助

当前,我正在使用NodeJS v13.12.0 Jest 25.4.0 xmljs 0.3.2打字稿3.8.3 ts-jest 25.4.0编写应用程序。此应用程序应模仿CalDAV服务器。因此,我依赖于xmljs模块,该模块...

回答如下:

您可以在测试设置中设置GLOBAL的值。似乎GLOBAL变量是节点中global的不赞成使用的形式。

本文标签: 未定义带有xmljs GLOBAL的笑话测试