Edit: I do not have the luxury of having a different program be able to use await or .then. The other software gives no control over that, just the ability to call a function and receive its answer as is. There surely must be a way to do this. It's not clear to me from the "duplicate question" that any of those options described are viable. Thanks. /end edit.
I have tried just about every combination of aysnc, await and resolve I can think of but no matter what I do, I am unable to create a node.js function that returns the contents of an FTP directory correctly. I am expecting
console.log(
abca(
'address',
'user',
'password',
'/home/counterpoint/081SA/Tickets'
)
);
to basically display the returned file list but it always returns Promise { } instead like it doesn't want to wait despite instructions saying to wait. Ultimately, I need to make it available for another system to use which is why I need it to run correctly inside a function. Any help would be greatly appreciated.
Full code:
"use strict";
var Client = require('ssh2-sftp-client');
var sftp = new Client();
console.log(
abca(
'address',
'user',
'password',
'/home/counterpoint/081SA/Tickets'
)
);
async function abca(host, user, pwd, path){
const config = {
host: host,
username: user,
password: pwd
};
const files = await new Promise( (resolve, reject) => {
resolve(
sftp.connect(config).then(() => {
return sftp.list(path);
}).then(data => {
//console.log(typeof data);
//console.log(data);
return JSON.stringify(data) ;
})
);
});
return files;
}
Regards,
Andrew