You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派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服务,让它等网络完全就绪后再启动:

    1. 导出PM2的systemd配置:pm2 startup systemd -u <你的用户名> --hp <你的用户主目录>
    2. 编辑生成的服务文件(路径一般是/etc/systemd/system/pm2-<用户名>.service),修改After字段:
      After=network.target systemd-networkd.service multi-user.target
      
    3. 重新加载systemd配置:sudo systemctl daemon-reload
    4. 重启PM2服务:sudo systemctl restart pm2-<用户名>
  • 检查并优化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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 05:24:32