Discord RPC应用登录失败 如何隐藏长报错替换为自定义日志
解决步骤
1. 正确实现Promise catch回调
你之前直接写.catch(error)属于没有定义错误处理逻辑的无效写法,替换为自定义处理函数,过滤连接错误的输出即可隐藏完整错误栈:
rpc.login({ clientId: "clientid" }) .catch(error => { // 匹配Discord桌面端未启动的连接错误 if (error.message.includes('Could not connect')) { console.log('RPC offline'); return; } // 其他类型错误可按需保留完整日志 console.error(error); });
2. 监听RPC实例的全局error事件
discord-rpc继承自Node.js EventEmitter,若底层连接出现未被Promise捕获的错误时,会触发error事件。如果没有绑定该事件的监听器,Node.js会直接终止进程,这是你之前修改catch后仍然闪退的核心原因:
// 初始化RPC实例后立即绑定error监听 rpc.on('error', error => { if (error.message.includes('Could not connect')) { console.log('RPC offline'); return; } console.error('RPC error:', error); });
3. 可选:全局兜底捕获未处理异常
如果还有偶现的闪退,可以在进程层面添加兜底捕获逻辑作为最后防线,避免程序直接退出:
process.on('unhandledRejection', (reason, promise) => { if (reason?.message?.includes('Could not connect')) { console.log('RPC offline'); return; } console.error('Unhandled Rejection at:', promise, 'reason:', reason); }); process.on('uncaughtException', error => { if (error.message.includes('Could not connect')) { console.log('RPC offline'); return; } console.error('Uncaught Exception:', error); });
内容的提问来源于stack exchange,提问作者S..
相关产品推荐
相关产品推荐

