无法在 module.exports 内的 promise 函数中返回解析
Posted
技术标签:
【中文标题】无法在 module.exports 内的 promise 函数中返回解析【英文标题】:Unable to return resolve in promise function inside module.exports 【发布时间】:2021-09-03 10:24:14 【问题描述】:我正在尝试从 module.exports 承诺函数返回 resolve()。 我这样称呼它:
prog
.version('1.0.0')
.command('addpeer')
.argument('<pubkey>', 'Enter the pubkey (pubkey@address)')
.action((args, options, logger) =>
return addPeers(
logger,
pubkey: args.pubkey,
lnd: lnd,
,
);
)
从那里转到另一个文件,其中定义了所有 module.exports: 它从这里找到要转到的文件。我正在调用 addPeers 文件。
const importLazy = require('import-lazy')(require);
const listPeers = importLazy('./listPeers.js');
const addPeers = importLazy('./addPeer.js')
const getChannels = importLazy('./getChannels.js')
const openChannels = importLazy('./openChannel.js');
const lnurl = importLazy("./lnurl");
const AddPeer_OpenChannel = importLazy('./AddPeer_OpenChannel.js');
module.exports =
lnurl,
listPeers,
addPeers,
getChannels,
openChannels,
AddPeer_OpenChannel
;
从那里到这里,现在我不明白如何在这里返回 Resolve,我可以返回拒绝但不能返回 resolve。
module.exports = args =>
return new Promise(async (resolve, reject) =>
if (!args.pubkey)
return reject(new Error('404-ExpectedPubKey'));
if (!args.lnd)
return reject(new Error('404-ExpectedLndAuthentication'));
args.logger.info("inside this");
const lnd = args.lnd;
const id = args.pubkey;
const str = id.split('@');
const pubKey = str[0];
const address = str[1];
lnService.addPeer( lnd, public_key: pubKey, socket: address , (err, result) =>
if(err)
reject(err);
else
resolve(result);
);
return resolve();
);
;
【问题讨论】:
【参考方案1】:你不会从 promise 回调中“返回”。你调用resolve() 或reject(),你不调用return resolve()
。只需resolve()
。
【讨论】:
【参考方案2】:确保callback
被执行并且只使用resolve
。以下是示例 sn-p:
class SampleClass
add(a, b, cb)
a + b;
cb();
const obj = new SampleClass();
module.exports = args =>
return new Promise(async (resolve, reject) =>
if (!args.pubkey)
reject(new Error('404-ExpectedPubKey'));
if (!args.lnd)
reject(new Error('404-ExpectedLndAuthentication'));
console.info("inside this");
obj.add(1, 2, (err,res)=>
if(err) reject(err)
resolve(`Resolved: $res`)
)
);
;
【讨论】:
以上是关于无法在 module.exports 内的 promise 函数中返回解析的主要内容,如果未能解决你的问题,请参考以下文章
是否可以 module.exports 从异步函数中导出局部变量?
export、export default 、module.exports详解