Mac 上做前后端联调时,很多问题不是业务代码错了,而是本地环境不一致:Node 版本、npm 源、代理、权限、Tomcat 脚本、Maven 打包路径和前端启动方式都可能影响结果。
Maven 打包先看插件输出路径
Spring Boot 项目打包时报 spring-boot-maven-plugin repackage 找不到 jar,可能是 POM 中自定义了输出目录,导致插件找不到预期产物。
排查时先看:
finalName是否被改过。outputDirectory是否嵌套了额外目录。spring-boot-maven-plugin和maven-jar-plugin是否输出到同一位置。
不要先怀疑 Maven 坏了,先确认产物路径。
Tomcat Permission denied
本地 Tomcat 脚本没有执行权限时,会报 Permission denied。处理:
chmod a+x catalina.sh
如果是整个目录复制过来的,也要检查 bin/ 下其他脚本权限。
npm 源要用当前可用地址
历史项目里常见旧淘宝源:
npm config set registry https://registry.npm.taobao.org
这个地址已经不适合直接照搬。现在更建议按当前官方说明使用可用镜像,或者回到 npm 官方源。查看当前配置:
npm config get registry
清除自定义源:
npm config delete registry
npm config delete disturl
Node 版本要跟项目走
不要只用全局最新 Node。优先看项目里的:
.nvmrc.node-versionpackage.json的engines- README 中的 Node 版本说明
如果使用 n 管理版本:
sudo npm install n -g
sudo n stable
n
sudo n rm 版本号
团队项目更推荐统一 .nvmrc 或 Volta,减少“我这里能跑”的环境差异。
前后端分离启动要分清脚本用途
有些前端仓库带 Windows 的 build.bat,Mac 本地不一定需要跑。常见联调方式:
- 后端:运行 Spring Boot 入口类。
- 前端:
npm install后npm run dev。 - 代理:前端 dev server 转发 API 到本地后端。
测试环境的一体化部署脚本,不一定适合本地开发。
npm 代理要及时清理
配置代理:
npm config set proxy http://127.0.0.1:8087
清理代理:
npm config delete proxy
npm config delete https-proxy
如果换了网络环境,npm 代理残留会导致安装依赖异常慢或直接失败。排查时记得看 npm config list。
Dubbo 或注册中心连不上
本地服务连不上注册中心时,先查:
- 注册中心地址。
- VPN 或内网连通性。
- 消费方是否允许启动时不检查。
- 超时时间是否过短。
- 本机 IP 是否被识别成 Docker、虚拟机或错误网卡地址。
如果注册中心依赖内网,本地代理和 VPN 状态也要一起检查。
实用结论
Mac 前后端联调先收敛环境:Node 版本跟项目,npm 源和代理要可解释,后端入口和前端 dev server 分开启动,权限和路径问题先看日志。环境稳定后,再排查业务代码,效率会高很多。




