в настоящее время я пишу приложение, используя
- NodeJS v13.12.0
- Шутка 25.4.0
- xmljs 0.3.2
- машинопись 3.8.3
- ц-шутка 25.4.0
Это приложение должно имитировать сервер 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);
});
Кто-нибудь может
Покажите мне модуль, который можно использовать вместо этого, не требуя значительных изменений моего кода.
- Which supports a pure js implementation without using node-gyp (since it may be used on windows server)
Покажите мне, как сделать обходной путь в шутке, чтобы подделать эту ГЛОБАЛЬНУЮ переменную, установленную в xmljs
я ценю вашу помощь