如何通过whatsapp-web.js实现重启脚本后保持登录状态?
解决whatsapp-web.js重启后无需重复扫码登录的问题
你当前的代码没有配置LocalAuth认证策略,这是whatsapp-web.js用来持久化登录会话的核心功能,所以每次重启都会要求重新扫码。以下是完整的可行解决方案:
修改后的完整代码
const { Client, LocalAuth, MessageMedia } = require('whatsapp-web.js'); const fs = require('fs'); const qrcode = require('qrcode'); // 确保已安装该模块 const client = new Client({ ffmpegPath: "C:/ffmpeg/bin/ffmpeg.exe", auth: new LocalAuth() // 启用本地会话持久化 }); client.on('qr', async qr => { qrcode.generate(qr, { small: true }); }); client.on('ready', async function () { console.log('Client is ready!'); }); // 启动客户端(原代码遗漏的关键步骤) client.initialize();
关键改动与注意事项
- 启用LocalAuth:在Client初始化参数中加入
auth: new LocalAuth()后,库会自动在项目根目录创建.wwebjs_auth文件夹,存储登录会话凭证,重启脚本时会自动读取该文件恢复登录状态。 - 安装依赖模块:代码中使用
qrcode生成二维码,需先执行安装命令:npm install qrcode - 调用initialize():原代码缺少启动客户端的关键步骤,必须调用
client.initialize()才能触发登录流程。 - 重置损坏会话:如果之前的会话数据导致无法自动登录,可删除项目根目录下的
.wwebjs_auth文件夹,重新扫码登录一次,让库生成新的有效会话文件。 - 权限检查:确保运行脚本的用户对项目目录有读写权限,否则LocalAuth无法创建或读取会话文件。
内容的提问来源于stack exchange,提问作者Dymo Kilan
相关产品推荐
相关产品推荐

