Appearance
常见问题
收集部署过程中最容易遇到的系统、Node、PM2、Nginx 和微信公众号登录问题,以及对应处理方式。
sudo apt update 提示 apt not found
说明你的服务器不是 Ubuntu,而是 RPM 系统,例如 Alibaba Cloud Linux。
Alibaba Cloud Linux 使用:
bash
sudo dnf update -y如果没有 dnf,再试:
bash
sudo yum update -yNode.js 20 提示 glibc 版本太低
如果看到:
text
Requires: glibc >= 2.28
Installed: glibc-2.17说明系统太旧。不要强行升级 glibc,建议更换系统到 Alibaba Cloud Linux 4 LTS / 3 或 Ubuntu 22.04/24.04。
PM2 status 是空表格
说明还没有启动任何进程。需要先执行:
bash
PORT=3000 \
SITE_ORIGIN='https://example.com' \
WECHAT_TOKEN='你的Token' \
WECHAT_ALLOWED_OPENIDS='openid1' \
pm2 start server/index.js --name my-siteProcess or Namespace not found
说明 PM2 里没有这个名字的进程。先看:
bash
pm2 status再使用表格里的 name 重启:
bash
pm2 restart my-site --update-envEADDRINUSE: address already in use
说明端口已经被另一个 Node 进程占用,常见于重复启动了两个 PM2 进程。
先看:
bash
pm2 status删除重复进程后只保留一个:
bash
pm2 delete my-site再重新启动。
Invalid URL,base 里有中文引号
环境变量里不能使用中文引号:
text
‘https://example.com’应该使用英文引号:
bash
SITE_ORIGIN='https://example.com'微信后台配置返回 HTTP 非 200
先确认:
- Nginx 已经反代到 Node。
- Node 服务在线。
- URL 是
/api/wechat/callback。 WECHAT_TOKEN和公众号后台 Token 完全一致。- 消息加解密方式先使用明文模式。
手动 curl 回调返回 403
这是正常的:
bash
curl -i https://example.com/api/wechat/callback手动请求没有微信签名,后端应该拒绝。
微信验证码登录没有回复
检查公众号后台:
- 服务器配置已启用。
- 消息加解密方式是明文模式。
- 消息格式是 XML。
- URL 是
https://example.com/api/wechat/callback。
再看 Nginx access log:
bash
sudo tail -f /var/log/nginx/access.log发送公众号消息后,应该出现 POST /api/wechat/callback。
api unauthorized 48001
这是公众号接口权限不足。个人订阅号通常不能创建带参数二维码,所以不能依赖扫码二维码登录。
解决方案是改用“公众号消息验证码登录”。
invalid ip 40164
说明公众号接口 IP 白名单没有包含服务器公网 IP。到公众号后台添加服务器公网 IP 后再试。
如果已经改成验证码登录,通常不再需要调用创建二维码接口。