в настоящее время я пишу приложение, используя
- NodeJS v13.12.0
- Jest 25.4.0
- xmljs 0.3.2
- машинописный текст 3.8.3
- ts-jest 25.4.0
Это приложение должно имитировать c сервер CalDAV. По этой причине я полагаюсь на модуль xmljs, который (после моих исследований) является единственным модулем, дающим мне прямой метод path
для поиска свойств в XML.
В узле Контейнер приложение работает нормально, без ошибок. Но когда я запускаю тест с 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)
Теперь я знаю, что эта ошибка возникает из-за модуля xmljs, пытающегося установить переменную GLOBAL
, который в 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);
});
Может ли кто-нибудь
Покажите мне модуль, который можно использовать вместо этого, не требуя огромных изменений моего кода
- Который поддерживает чистую реализацию js без использования node-gyp (так как его можно использовать на windows сервере)
Покажите мне как сделать обходной путь в шутку, чтобы обмануть эту ГЛОБАЛЬНУЮ переменную, установленную в xmljs
Я ценю вашу помощь