NodeJS discord rpc应用程序登录不成功错误

7cwmlq89  于 2023-06-22  发布在  Node.js
关注(0)|答案(2)|浏览(159)

我有一个问题,我的应用程序关闭时,不和谐没有启动桌面上,因为RPC。

rpc.login({
    clientId: "clientid"
})
.catch(console.error);

现在,当我添加catch块时,它不会在无法连接时关闭,但它会向用户显示一个相当长的错误,我想隐藏或替换为较小的控制台日志,如“RPC离线”或其他内容

Error: Could not connect
at Socket.onerror (C:\snapshot\test\node_modules\discord-rpc\src\transports\ipc.js:32:16)
at Object.onceWrapper (node:events:514:26)
at Socket.emit (node:events:394:28)
at emitErrorNT (node:internal/streams/destroy:193:8)
at emitErrorCloseNT (node:internal/streams/destroy:158:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)

当然,我尝试使用普通的try-catch,只使用.catch(error)而不是.catch(console.error),但这似乎并没有捕获不成功的连接,只是再次关闭脚本。

yshpjwxd

yshpjwxd1#

rpc.login方法返回一个**Promise**,如果不能实现(拒绝promise),就会抛出一个错误,你使用Promise.prototype.catchtry/catch的方法是绝对正确的,从你的问题中我可以理解
我想隐藏或替换为一个较小的控制台日志,如“RPC离线”。
当你在promise中捕获错误时,你可以简单地传递一个console.log语句,如下所示:

rpc.login({
    clientId: "clientid"
}).catch((e) => {
    console.log(`RPC Offline`)
});

或使用try/catch/finally-(如果多次重试登录,建议使用)

try {
    login(rpc);
}
catch (e) {
    console.log(`RPC Offline`)
}
finally {
    console.log(`Could not connect therefore retrying to login`)
    login(rpc);
}

async function login(rpc) {
    await rpc.login({
        clientId: "clientid"
    })
}
8fsztsew

8fsztsew2#

现在,当我添加catch块时,它不会在无法连接时关闭,但它会向用户显示一个相当长的错误,我想隐藏或替换为较小的控制台日志,如“RPC离线”或其他内容
你的意思是你想做像.catch(() => console.log("RPC Offline"))这样的东西?
当然,我尝试使用普通的try-catch和only .catch(error)而不是.catch(console.error),但这似乎并没有捕获不成功的连接,只是再次关闭脚本。
因为这是一个promise,除非您是await ing,否则无法通过try-catch处理拒绝

相关问题