主要问题及解决方法
1. 端口 3000 被占用
症状:webhook-server 进程无法绑定到端口 3000,报错 EADDRINUSE。
解决方法:
-
查找并终止占用端口 3000 的进程:
bash复制
sudo lsof -i :3000 sudo kill -9 <PID> -
删除所有 PM2 进程并重新启动
webhook-server:bash复制
pm2 stop all pm2 delete all cd /var/www/myproject/webhook-server pm2 start server.js --name webhook-server pm2 save sudo pm2 startup systemd -u $(whoami) --hp /home/$(whoami)
2. Gitee Webhook 请求超时
症状:Gitee Webhook 请求历史中显示 Read timed out。
解决方法:
-
确保服务器可从外部访问,并检查防火墙和云服务提供商的安全组设置。
-
使用外网 IP 地址测试 Webhook URL。
-
检查 Nginx 配置,确保正确转发
/deploy请求:nginx复制
location /deploy { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 60s; } -
增加
deploy.sh脚本中的日志记录以调试问题。
3. 手动构建报错 sh: vue-cli-service: command not found
症状:手动运行 deploy.sh 时报错 sh: vue-cli-service: command not found。
解决方法:
-
修改
deploy.sh脚本以使用相对路径调用vue-cli-service:bash复制
./node_modules/.bin/vue-cli-service build -
确保项目目录中包含所有必要的依赖项,并安装所有依赖项:
bash复制
rm -rf node_modules rm package-lock.json npm install
4. 手动构建报错 Error: Cannot find module '@vue/cli-plugin-babel'
症状:手动运行 deploy.sh 时报错 Cannot find module '@vue/cli-plugin-babel'。
解决方法:
-
卸载全局安装的
@vue/cli及相关插件:bash复制
npm uninstall -g @vue/cli @vue/cli-service @vue/cli-plugin-babel -
重新安装全局
@vue/cli:bash复制
npm install -g @vue/cli -
确保项目依赖项正确安装:
bash复制
rm -rf node_modules rm package-lock.json npm install
5. 自动构建报错 Git pull failed
症状:自动构建过程中 git pull 失败。
解决方法:
-
确认 Git 远程 URL 正确,并且服务器有权限拉取代码。
-
使用 SSH 密钥进行身份验证(推荐):
-
生成 SSH 密钥并添加到 Gitee:
bash复制
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ssh -T git@gitee.com git remote set-url origin git@gitee.com:username/repository.git -
或者使用 HTTPS 凭据:
-
配置凭据缓存:
bash复制
git config --global credential.helper cache -
使用 Personal Access Token(PAT)进行身份验证:
bash复制
git pull https://oauth2:<YOUR_PAT>@gitee.com/username/repository.git master
-
-
总结
通过以上步骤,您可以解决以下问题:
- 端口被占用导致
webhook-server无法启动。 - Gitee Webhook 请求超时。
vue-cli-service命令找不到。@vue/cli-plugin-babel模块缺失。git pull失败导致自动构建失败。