Узел мыльного сервера: неопределенные свойства, разбор запроса, xml - PullRequest
0 голосов
/ 03 ноября 2019

Мне известно о этом и этом подобных вопросах, я не смог найти там ничего, что решило бы мою проблему.

СПЕЦ: *Сервер 1008 *, размещенный на heroku, написанный на JS для узла, использующий модули узла-soap и body-parser, взаимодействующий с Quickbooks Web Connector в качестве веб-службы.

Я регистрирую сообщения мыльного серверапоскольку он отвечает на запросы клиентов мыла (из Quickbooks Web Connector), и они выглядят так:

soap server received...
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><authenticate xmlns="http://developer.intuit.com/"><strUserName>******</strUserName><strPassword>******</strPassword></authenticate></soap:Body></soap:Envelope>

soap server error...
TypeError: Cannot read property 'description' of undefined
 at SAXParser.p.onopentag (/app/node_modules/soap/lib/wsdl/index.js:241:37)
at emit (/app/node_modules/sax/lib/sax.js:624:35)
at emitNode (/app/node_modules/sax/lib/sax.js:629:5)
at openTag (/app/node_modules/sax/lib/sax.js:825:5)
 at SAXParser.write (/app/node_modules/sax/lib/sax.js:1391:13)
at WSDL.xmlToObject (/app/node_modules/soap/lib/wsdl/index.js:446:11)
at Server._process (/app/node_modules/soap/lib/server.js:240:29)
at Server._processRequestXml (/app/node_modules/soap/lib/server.js:162:18)
at IncomingMessage.<anonymous> (/app/node_modules/soap/lib/server.js:230:25)
at IncomingMessage.emit (events.js:215:7)
at endReadableNT (_stream_readable.js:1183:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21)

Из журналов я думаю, что сервер мыла не может проанализировать запрос из запроса POSTтело правильно, хотя я следовал примеру readme, как этот, чтобы использовать bodyparser.raw() перед подключением сервера мыла:

//for qb post requests, use raw for node-soap library
app.use(bodyparser.raw({
  type: function() {
    return true
  },
  limit: '5mb'
}))

var soap_server = soap.listen(app, '/', soap_service, soap_wsdl, function() {
  console.log('SOAP server initialized')
})

Кто-нибудь знает решение?

...