【问题标题】:Nodejs, soap, callback is not a functionNodejs,soap,回调不是函数
【发布时间】:2016-08-25 07:50:32
【问题描述】:

首先我得到了 pfx 证书,该证书将其导出到 pem 并使用 openssl 生成密钥(如果这可能是一个问题)。我尝试使用 client.setSecurity(new soap.ClientSSLSecurit ()) 但后来我得到客户端未定义。

我的代码是这样的:

var soap = require('soap'),
    fs = require('fs');
var url = 'tes.com';

var auth = "Basic " + new Buffer("user" + ":" + "password").toString("base64")



soap.createClient( url, {wsdl_options: {
    cert: fs.readFileSync('cert/certificate.pem'),
    key: fs.readFileSync('cert/certificate.key')
    }
}, { wsdl_headers: {Authorization: auth} }, function(err, client) {


    client.describe();

});

我收到此错误,不知道是什么问题:

callback(err, wsdl && new Client(wsdl, endpoint, options));
    ^

TypeError: callback is not a function
    at D:\web\mobile\node_modules\soap\lib\soap.js:50:5
    at D:\web\mobile\node_modules\soap\lib\soap.js:33:16
    at D:\web\mobile\node_modules\soap\lib\wsdl.js:2167:9
    at Request._callback (D:\web\mobile\node_modules\soap\lib\http.js:114:14)
    at self.callback (D:\web\mobile\node_modules\request\request.js:187:22)
    at emitOne (events.js:96:13)
    at Request.emit (events.js:188:7)
    at Request.onRequestError (D:\web\mobile\node_modules\request\request.js:813:8)
    at emitOne (events.js:96:13)
    at ClientRequest.emit (events.js:188:7)

tnx 米哈

【问题讨论】:

  • 我遇到这个问题是因为我在非异步函数上调用了await.. await client.getXX 而不是await client.getXXAsync

标签: node.js soap soap-client


【解决方案1】:

你的论点不正确。请像这样更正:

soap.createClient( url, {wsdl_options: {
    cert: fs.readFileSync('cert/certificate.pem'),
    key: fs.readFileSync('cert/certificate.key')
    },
wsdl_headers: {Authorization: auth} }, function(err, client) {


    client.describe();

});

【讨论】:

  • 感谢 :) 我修复了它,但现在得到: client.describe(); ^ 类型错误:无法读取 D:\web\mobile\app.js:26:8 at D:\web\mobile\node_modules\soap\lib\soap.js:50:5 at D:\ web\mobile\node_modules\soap\lib\soap.js:33:16 at D:\web\mobile\node_modules\soap\lib\wsdl.js:2167:9 at Request._callback 如何知道在哪里是问题吗?如果问题出在证书或其他问题上,如何进行调试? tnx
  • @user2017319 检查err 对象
  • tnx @Ebrahim Pasbani 为您提供快速回复。这是错误显示的内容:错误:连接 ETIMEDOUT xxx.xxx.xxx.xxx:443 at Object.exports._errnoException (util.js:1007:11) at exports._exceptionWithHostPort (util.js:1030:20) at TCPConnectWrap。 afterConnect [as oncomplete] (net.js:1080:14) 8 月 25 日 10:07:36 - [nodemon] 应用程序崩溃 - 在开始之前等待文件更改.. 这是重新排序 ssl 还是其他? tnx
  • @user2017319 它说超时异常。因此,请检查该主机是否对端口 443 开放,以及它是否可以访问
  • 看看 :) 我和客户谈过,他们说我们这边的超时时间应该是第一次大约 1 分钟(他们的 Web 服务行为)。是否可以在 soap.createClient 上设置它?我无法在回调中设置此设置,因为由于超时未定义回调中的客户端。 tnx
猜你喜欢
  • 1970-01-01
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
相关资源
最近更新 更多