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

使用AWS CodePipeline部署Gatsby v2.20.12时遇调用栈溢出错误

解决Gatsby v2.20.12在AWS CodePipeline构建时npm install报错的问题

问题定位

你遇到的npm ERR! Maximum call stack size exceeded报错,和CodeBuild的硬件资源无关,核心是旧版Gatsby与当前CI环境的npm/Node.js版本不兼容——Gatsby v2.20.12是2020年的版本,对npm v7+的依赖解析逻辑不兼容,导致递归解析依赖时栈溢出。

具体解决步骤

1. 锁定CI环境的npm和Node.js版本

旧版Gatsby v2.x仅兼容npm v6.x和Node.js 10.x-12.x,在CodeBuild的buildspec.yml中强制指定版本:

version: 0.2
phases:
  install:
    commands:
      # 降级npm到v6
      - npm install -g npm@6
      # 切换到兼容的Node.js版本
      - nvm install 12
      - nvm use 12
  build:
    commands:
      - npm install
      - npm run build

也可以在项目的package.json中添加engines字段,让npm自动校验版本:

"engines": {
  "node": "12.x",
  "npm": "6.x"
}

2. 放弃全局安装Gatsby

全局安装Gatsby容易引发版本冲突,改为本地安装后通过npm脚本执行构建:

  1. 本地项目执行:npm install gatsby@2.20.12 --save-dev
  2. 在package.json中添加构建脚本:
"scripts": {
  "build": "gatsby build"
}
  1. 修改buildspec.yml中的构建命令为npm run build,不再执行npm install -g gatsby

3. 清理CodeBuild缓存

旧的依赖缓存可能导致冲突,在CodeBuild项目的「构建项目设置」中暂时关闭「缓存」选项,重新运行流水线验证问题是否解决。

4. 关于CodePipeline版本的说明

当前报错和CodePipeline v1/v2无关,不需要升级流水线版本。如果后续需要更灵活的部署流程(比如并行阶段、自定义执行角色),再考虑升级到v2即可。

内容的提问来源于stack exchange,提问作者adam.shaleen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:02:16