树莓派4重启后,PM2管理的Node.js Discord机器人无法上线求助
Discord机器人PM2重启后无法上线的问题解决
核心原因
getaddrinfo EAI_AGAIN discord.com 是DNS解析失败的报错,根源是系统重启后PM2启动新增机器人的时机太早,树莓派的网络(尤其是DNS服务)还没完全初始化好,导致机器人没法解析discord.com的域名。而手动启动时网络已经稳定,所以能正常运行。
具体解决办法
给新增机器人进程加启动延迟
在PM2里给这个机器人设置启动延迟,等网络就绪后再启动。可以修改PM2的配置文件(比如ecosystem.config.js),给对应进程添加delay参数:module.exports = { apps: [ { name: "原有机器人", script: "./bot1.js" }, { name: "新增机器人", script: "./bot2.js", delay: 10000 // 延迟10秒启动,可根据实际调整时长 } ] };也可以用命令行直接设置:
pm2 restart <新增机器人进程名> --delay 10000,然后执行pm2 save保存配置。让PM2依赖网络服务启动
配置PM2的systemd服务,让它等网络完全就绪后再启动:- 导出PM2的systemd配置:
pm2 startup systemd -u <你的用户名> --hp <你的用户主目录> - 编辑生成的服务文件(路径一般是
/etc/systemd/system/pm2-<用户名>.service),修改After字段:After=network.target systemd-networkd.service multi-user.target - 重新加载systemd配置:
sudo systemctl daemon-reload - 重启PM2服务:
sudo systemctl restart pm2-<用户名>
- 导出PM2的systemd配置:
检查并优化DNS配置
若树莓派重启后DNS解析不稳定,可手动指定公共DNS:
编辑/etc/dhcpcd.conf,添加以下内容:static domain_name_servers=8.8.8.8 1.1.1.1保存后重启网络服务:
sudo systemctl restart dhcpcd,再用nslookup discord.com测试,确保能正常返回IP地址。
内容的提问来源于stack exchange,提问作者Jacob Murtari
相关产品推荐
相关产品推荐

