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

Travis构建因Git子模块失败问题求助

解决Travis构建含Git子模块的Angular项目时npm依赖缺失问题

看起来你遇到的问题核心是Travis构建环境中,后端子模块的npm依赖没有被正确安装,导致找不到raw-body/package.json。结合你提到的本地复现情况,我们可以从以下几个方向排查和解决:

1. 明确问题根源

你提到本地执行git clone --branch=upgrade ... + git submodule update --init --recursive会报错,但直接git clone --recursive ...正常——这大概率不是子模块拉取的问题,而是:

  • 后者可能是在你本地已存在的项目目录执行,子模块的node_modules已经提前安装过;
  • 前者是全新拉取代码,子模块目录下没有执行npm install,导致依赖缺失。

报错信息里的路径/backend/node_modules/raw-body/package.json也印证了这一点:node_modules不会被Git跟踪,所以拉取子模块后必须手动安装依赖。

2. 修改Travis构建脚本,添加子模块依赖安装步骤

在你的.travis.yml文件中,需要在主项目依赖安装后,进入后端子模块目录执行npm install。示例配置如下:

language: node_js
node_js:
  - "14" # 替换为你的项目使用的Node版本
before_install:
  - git submodule update --init --recursive # 确保递归拉取所有子模块
  - cd backend && npm install && cd .. # 先安装子模块依赖
install:
  - npm install # 安装主项目依赖
script:
  - ng build --prod # 执行你的Angular构建命令

3. 排查子模块分支匹配问题

如果上述步骤无效,可能是upgrade分支下的子模块引用版本有问题:

  • 检查主项目upgrade分支的.gitmodules文件,确认子模块的branch配置是否正确(如果指定了分支);
  • 尝试在本地全新目录执行git clone --branch=upgrade ... + git submodule update --init --recursive,然后手动进入backend执行npm install,看是否能解决问题——如果可以,那就是Travis脚本缺少这一步。

4. 验证Travis构建命令

如果子模块需要拉取指定远程分支的最新代码,可以修改子模块更新命令:

git submodule update --init --recursive --remote

这个命令会拉取子模块配置中指定的远程分支最新代码,避免子模块引用的是旧的commit导致依赖缺失。

内容的提问来源于stack exchange,提问作者faxad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:43:49