带有 NodeJS 的 SOAP - req.then 不是一个函数

问题描述 投票:0回答:1

我有一个旧应用程序正在经历升级过程(服务器硬件/操作系统、NodeJS + 模块、SQL 服务器等)。

应用程序具有 SOAP 的 2FA。为此,我使用了这个模块。 现在我已经升级到模块的最新版本(1.0.0),但遇到了以下错误:

req.then is not a function

根据文档,API 调用方面没有太大变化,所以我很确定这是我错过/没有注意到的东西,但我只是不知道它是什么。

const url = 'https://example.com/wsi/service.php?wsdl';

let args = {
    username: 'username',
    authKey: 'auth_key',
    sender: '',
    recipient: req.user.phone,
    message: '',
    scheduleDate: '',
    validity: '',
    callbackUrl: ''
};

let request_with_defaults = request.defaults({ 'proxy': 'proxy', 'timeout': 5000, 'connection': 'keep-alive' });
let soap_client_options = { 'request': request_with_defaults };

args.message = generateSMSCode(req, codeTime);
args.recipient = phone;

soap.createClient(url, soap_client_options, function(err, client) {
    client.sendSmsAuthKey(args, function(err, result) {
        if (err) {
            console.log(currentDateTime.getCurrentDate() + " - ERROR!");
            console.log(err);
        }

        console.log(currentDateTime.getCurrentDate() + " - Code Sent at " + codeDateTime + "!");

        res.redirect('/auth/validate');
    });
});

到目前为止,我注意到,如果删除选项参数(soap_client_options),我确实会收到服务器错误,因为没有身份验证密钥,但除此之外,我无法弄清楚。

是不是options参数有问题?

我很感激任何建议。

LE:

function generateSMSCode(req, codeTime) {
    console.log(currentDateTime.getCurrentDate() + " - sendsms.js > generateSMSCode");

    let token = speakeasy.totp({
        secret: JSON.parse(req.user.secretID).base32,
        encoding: 'base32',
    });

    let generatedMessage = token + " SMS MESSAGE";

    return generatedMessage;
}
node.js soap soap-client
1个回答
0
投票

你解决问题了吗? 我使用 TLS1.0 和代理调用我的肥皂服务时遇到同样的问题

© www.soinside.com 2019 - 2024. All rights reserved.