AEM as a Cloud Service中的前端管道故障疑难解答

在AEM as a Cloud Service中将全栈管道转换为仅前端(FE)管道时,由于平台特定的依赖项和严格的筛选要求,可能会发生构建失败。 在Windows或macOS上生成package-lock.json可能会导致与基于Linux的Cloud Manager不兼容。 此外,FE管道强制实施全栈Maven构建中不存在的代码样式检查。

注释

  • 当Cloud Manager运行前端管道时,它不会首先执行npm安装,它只需要Git中的package-lock.json并运行npm audit --production --audit-level=critical。 但是,全栈管道安装我们通过frontend-maven-plugin请求的节点/NPM版本,它运行npm install,因此我们在全栈管道中未看到问题。

描述 description

环境

  • 产品: AEM as a Cloud Service — 站点
  • 管道:仅前端(FE)管道(通过Cloud Manager)
  • 节点版本: 14.19.1
  • npm版本:6.14.x
  • 用于本地生成的操作系统:Windows(本地)、Linux(Cloud Manager容器)
  • 所需权限: Cloud Manager中的部署管理器角色

问题/症状

  • 在npm安装期间,管道失败,并出现错误,例如* 无法从chokida r*访问fsevents
  • 与缺少或不匹配的package-lock.json文件相关的错误
  • 本地构建在Windows或Mac上成功,但在Cloud Manager管道中失败
  • 数百个ESLint/代码样式错误会导致仅FE管道失败,而全栈管道默认不会强制执行这些检查

解决方法 resolution

请尝试以下步骤来解决问题:

  1. 确保package-lock.json存在于ui.frontend模块中并已提交到您的存储库。

  2. 使用Linux环境重新生成package-lock.jsonnode_modules(使用Windows Subsystem for Linux或Docker)。 要重现并解决仅使用FE的管道的平台特定依赖性问题,请在WSL终端中使用以下命令:  

    code language-none
    cd /path/to/your/project
    rm -rf package-lock.json node_modules
    npm install
    git add package-lock.json
    git commit -m "Regenerate package-lock.json on Linux"
    

     
    或者在Linux容器中运行:
     

    code language-none
    docker run --rm -v $(pwd):/app -w /app node:16-alpine \
      sh -c "rm -rf node_modules package-lock.json && npm install"
    

     

  3. 更新过时的依赖项,包括Jest、Storybook和Webpack。

  4. 使用具有生产和关键审核级别标志的npm audit来标识剩余的依赖性问题。 例如:npm audit --production --audit-level=critical

  5. 将重新生成的package-lock.json文件从Linux环境提交到存储库。

  6. 将更改推送到仅FE管道使用的分支。

  7. 在Cloud Manager中重新运行仅限FE的管道。

  8. 解决构建过程中报告的任何ESLint/代码样式错误;必须解决所有lint错误才能成功部署。

  9. 如果仅出于验证目的而需要,请在package.json中临时删除生成脚本中的Linting。 但是,不建议将此用于生产。

  10. 验证构建步骤是否成功完成,并且没有依赖关系或Linting错误。

  11. 如果部署成功,但您的站点的样式和脚本未加载,请检查Dispatcher设置和CDN配置。 请确保已启用的vhost包含静态域的正确ServerAlias。 有关步骤,请参阅前端管道部署中断网站

  12. 如果管道因BUILD_NPM_AUDIT_ERROR而失败,请删除任何冲突的SiteConfig或HtmlPageItemsConfig节点。 有关步骤,请参阅如何解决AEM as a Cloud Service前端管道中的BUILD_NPM_AUDIT_ERROR。

注释

  • 与全栈Maven构建相比,仅FE管道强制进行更严格的代码样式检查;所有lint错误必须在部署之前解决。

  • 您可以通过向package.json添加以下脚本来自动完成修复JavaScript和CSS Linting错误的过程:

    code language-none
    "scripts": {
      "lint:fix": "npm run lint:js:fix && npm run lint:css:fix"
    }
    

这允许您在推送更改之前运行npm run lint:fix以自动更正许多Linting问题。

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f