'Async'- 접미사가있는 일반 메소드가있는 API를 약속 할 수 없습니다.

2017-11-10 3 views
0

노드를 사용하여 SOAP 웹 서비스를 호출하려고합니다. 비누와 요청 패키지를 사용했습니다. 여기'Async'- 접미사가있는 일반 메소드가있는 API를 약속 할 수 없습니다.

var express = require('express'); 
var Promise = require("bluebird"); 
var app = express(); 
var soap = require('soap') 

var url = 'http://example.com?WSDL'; 
let request = require('request'); 
let request_with_defaults = request.defaults({ 
    'proxy': 'http://example.com:80', 
    'timeout': 5000, 
    'connection': 'keep-alive' 
}); 
let soap_client_options = { 
    'request': request_with_defaults 
}; 
var args = { 
    requestId: '1406303' 
}; 
soap.createClient(url, soap_client_options, function(err, client) { 
    var soapHeader = { 
    "Username": "test", 
    "Password" : "test" 
    }; 
    client.addSoapHeader(soapHeader); 

    client.getESSJobStatus(args, function(err, result) { 
    if(err){ 
     console.log('Error occured'); 
    } 
    console.log(result); 
    }); 
}) 

내가 점점 오전 오류 :

throw new TypeError("Cannot promisify an API that has normal methods with '%s'-suffix\u000a\u000a See http://bluebirdjs.com/docs/error-explanations.htmlX\u000a" 
TypeError: Cannot promisify an API that has normal methods with 'Async'-suffix 
See http://bluebirdjs.com/docs/error-explanations.html 

나는이 URL을 확인했다

아래는 코드입니다. 전화를 걸 수없는 비동기 작업이 생성되는 것입니다. 그러나 나는 이것을 관련시킬 수 없다.

누구든지 코드를 사용하여이 문제를 해결할 수 있습니까?

+0

'는 그 비동기 작업이 아닌 더를 created'됩니다 말을하지 않습니다 시도 - 당신이 *'overridePromiseSuffix 아마도 "비누"문서를 읽어 –

+1

을 게시 코드에 Promisify의 힌트가 없다 : 경우에 당신의 wsdl 작업에 Async 접미사가있는 이름이 포함되어 있으면 기본 약속 접미사를 사용자 정의 접미사로 사용자 정의 된 접미어로 대체해야합니다. 기본값 : Async' * - https://www.npmjs.com/package/soap –

+0

'overridePromiseSuffix : 'Blah' '또는 무엇이든'soap_client_options' –

답변

0

Promise.promisifyAll(require('soap'), {suffix: 'MySuffix'});

관련 문제