AWS Amplify 前端构建在主分支上失败但在功能分支上成功构建
AWS Amplify Frontend Build Failed on master branch but successfully builds on a feature branch
我最近在我正在开发的 react-app 上添加了 google 标签管理器,并将其推送到名为 gtm 的分支中。
AWS Amplify 成功构建了应用程序,它已经启动 运行。然后我将这些更改合并到 master 分支中,没有合并冲突。但是,在 master 分支中(它托管在自定义域中)由于此错误,应用程序无法构建:
Error: [BABEL] /codebuild/output/src957941865/src/webapp/src/index.js:
Cannot find module '@babel/helper-regex'
下面是 AWS Amplify 中显示的构建错误
(1) 首先要做的显然是执行此操作:
yarn add @babel/helper-regex
但是,使用新更改进行部署只会创建另一个
Error: [BABEL] /codebuild/output/src957941865/src/webapp/src/index.js:
但是使用了不同的 babel 模块,所以这会创建一个很长的添加包链,不一定能解决根本问题。
(2) 我做的第二个修复是还原到已成功部署的应用程序版本。我最初怀疑 google 标签管理器是导致问题的原因。然而,事实并非如此。显示相同的错误。
(3) 我做的第三件事是我提到了这个问题中建议的修复 (https://github.com/facebook/create-react-app/issues/8062)。总结线程,它说我需要做的就是执行以下操作。
- 删除node_modules
- 删除yarn.lock
- 执行
yarn install
不幸的是,这并没有解决问题,构建错误仍然存在。
(4) 我做的第四个修复是我检查了两个分支 master 和 gtm 使用 git diff master..gtm
结果如下。
看到有差异,出于绝望,我下载了 **gtm** 分支,然后将其内容复制粘贴到 windows 资源管理器中的 master 分支,然后提交更改。
不幸的是,这仍然没有解决问题。
我唯一没有尝试过的是在 AWS amplify 中重新连接 master 分支,但我不想冒网站无法运行的风险,因为有活跃的用户,如果我经历过它,它仍然没有解决这个问题,它会造成更多的不便。我希望有人已经经历过这个并且可以指出正确的方向。
我建议您也尝试结合修复 (2) 和 (3)。也就是说,恢复到版本 w/out google 标签管理器 ,然后是 纱线清理安装(即删除 node_modules & yarn.lock -> 纱线安装)。这样做的原因是,即使您恢复到已知良好的版本,您的本地工作区可能仍然有来自 gtm 分支的损坏的 yarn 依赖关系。
我最近在使用 storybook 和 create-react-app 解决 babel-loader 的依赖问题时遇到了类似的问题。
在我注意到其他预览版本工作正常,同时具有与主分支相同的代码后,我怀疑 node_modules 缓存是罪魁祸首。
我不知道是否有更简单的方法来清理 amplify 内部使用的 node_modules 缓存(搜索了一下,没有找到),所以我只是在 preBuild 阶段添加了一个额外的命令(rm -rf node_modules)
例如
version: 1
frontend:
phases:
preBuild:
commands:
- rm -rf node_modules
- yarn install
一旦构建通过并重新生成缓存(这是构建过程的最后一步),您只需删除添加的命令,一切都会按预期在未来的构建中运行。
我最近在我正在开发的 react-app 上添加了 google 标签管理器,并将其推送到名为 gtm 的分支中。
AWS Amplify 成功构建了应用程序,它已经启动 运行。然后我将这些更改合并到 master 分支中,没有合并冲突。但是,在 master 分支中(它托管在自定义域中)由于此错误,应用程序无法构建:
Error: [BABEL] /codebuild/output/src957941865/src/webapp/src/index.js: Cannot find module '@babel/helper-regex'
下面是 AWS Amplify 中显示的构建错误
(1) 首先要做的显然是执行此操作:
yarn add @babel/helper-regex
但是,使用新更改进行部署只会创建另一个
Error: [BABEL] /codebuild/output/src957941865/src/webapp/src/index.js:
但是使用了不同的 babel 模块,所以这会创建一个很长的添加包链,不一定能解决根本问题。
(2) 我做的第二个修复是还原到已成功部署的应用程序版本。我最初怀疑 google 标签管理器是导致问题的原因。然而,事实并非如此。显示相同的错误。
(3) 我做的第三件事是我提到了这个问题中建议的修复 (https://github.com/facebook/create-react-app/issues/8062)。总结线程,它说我需要做的就是执行以下操作。
- 删除node_modules
- 删除yarn.lock
- 执行
yarn install
不幸的是,这并没有解决问题,构建错误仍然存在。
(4) 我做的第四个修复是我检查了两个分支 master 和 gtm 使用 git diff master..gtm
结果如下。
看到有差异,出于绝望,我下载了 **gtm** 分支,然后将其内容复制粘贴到 windows 资源管理器中的 master 分支,然后提交更改。
不幸的是,这仍然没有解决问题。
我唯一没有尝试过的是在 AWS amplify 中重新连接 master 分支,但我不想冒网站无法运行的风险,因为有活跃的用户,如果我经历过它,它仍然没有解决这个问题,它会造成更多的不便。我希望有人已经经历过这个并且可以指出正确的方向。
我建议您也尝试结合修复 (2) 和 (3)。也就是说,恢复到版本 w/out google 标签管理器 ,然后是 纱线清理安装(即删除 node_modules & yarn.lock -> 纱线安装)。这样做的原因是,即使您恢复到已知良好的版本,您的本地工作区可能仍然有来自 gtm 分支的损坏的 yarn 依赖关系。
我最近在使用 storybook 和 create-react-app 解决 babel-loader 的依赖问题时遇到了类似的问题。
在我注意到其他预览版本工作正常,同时具有与主分支相同的代码后,我怀疑 node_modules 缓存是罪魁祸首。
我不知道是否有更简单的方法来清理 amplify 内部使用的 node_modules 缓存(搜索了一下,没有找到),所以我只是在 preBuild 阶段添加了一个额外的命令(rm -rf node_modules)
例如
version: 1
frontend:
phases:
preBuild:
commands:
- rm -rf node_modules
- yarn install
一旦构建通过并重新生成缓存(这是构建过程的最后一步),您只需删除添加的命令,一切都会按预期在未来的构建中运行。