Spartacus storefront 使用服务器端渲染(SSR)运行时,Spartacus API调用返回504(网关超时)

Spartacus storefront 使用服务器端渲染(SSR)运行时,Spartacus API调用返回504(网关超时),spartacus-storefront,Spartacus Storefront,我想让斯巴达克斯和SSR合作。打开默认URL时,店面会按预期呈现,但只有在我首先清除站点数据后才会呈现。当我尝试浏览店面时,API调用失败,出现504(网关超时)。Chrome dev tools表示服务工作者中正在发生错误。此时,我想知道我是否错误地配置了Spartacus。当运行Spartacus时使用的是Thread start而不是Thread serve:ssr,我可以加载主页并正常浏览站点 OS: Ubuntu 16.04.6 LTS Chrome Version: 73.0.368

我想让斯巴达克斯和SSR合作。打开默认URL时,店面会按预期呈现,但只有在我首先清除站点数据后才会呈现。当我尝试浏览店面时,API调用失败,出现504(网关超时)。Chrome dev tools表示服务工作者中正在发生错误。此时,我想知道我是否错误地配置了Spartacus。当运行Spartacus时使用的是Thread start而不是Thread serve:ssr,我可以加载主页并正常浏览站点

OS: Ubuntu 16.04.6 LTS
Chrome Version: 73.0.3683.75
Node version: 11.15.0
Angular CLI version: 8.3.8
Yarn version: 1.19.1
之后

我还将匿名同意设置为false。设置为true后,我得到了很多CORs错误


如果我有一段时间不明白这一点,我希望对斯巴达克斯的内部工作有更多了解的人能够解释为什么斯巴达克斯在SSR上会这样做。

我不确定我能给你一些解决问题的方法,显然我需要更多关于你问题的细节和日志,但是,根据我的经验,我可以与你们分享一些关于我们应该如何处理这些问题(与SSR相关)的技巧和窍门

与SSR相关的一套理论

  • (您可以随意使用Angular官方文档作为主要来源,因为Spartacus使用Angular OOTB功能使其工作)
  • (SSR相关视频)
调试SSR的实用方法

  • 在Node.js中启动应用程序时,应该观察和分析控制台输出
  • 您可以使用示例店面应用程序()中的SSR配置作为起点,因为OOTB SSR的工作方式很有魅力
  • 斯巴达克斯队的东西
确保正确配置应用程序的通用理论集

  • 用于Spartacus的SAP Commerce云配置
  • 请参阅指南,以确保前端应用程序具有正确的配置
  • 仔细检查B2cStorefrontModule正在使用的配置(这里您可以找到一个示例项目)
  • 查看网络和控制台浏览器选项卡,并尝试解决所有错误
    • 您是否关闭了PWA

      关闭PWA

      一旦Spartacus以PWA模式安装,就会安装一个服务工作者,它将与js文件一起提供index.html的缓存版本。这导致SSR被完全跳过。以下步骤描述了如何关闭PWA:

      检查您的应用程序中是否没有注册服务人员。如果您确实找到任何服务人员,请将其移除

      在应用程序模块配置中关闭PWA,如下所示:

       StorefrontModule.withConfig({
             backend: {
               occ: {
                 baseUrl: 'https://[your_enpdoint],
               },
             },
             pwa: {
               enabled: false,
             },
       };
      
      通过运行以下命令重建本地Spartacus库:

      yarn build:core:lib
      
       yarn build --prod
      
      yarn build:ssr
      
       yarn serve:ssr
      
      通过运行以下命令,构建本地Spartacus shell应用程序:

      yarn build:core:lib
      
       yarn build --prod
      
      yarn build:ssr
      
       yarn serve:ssr
      
      通过运行以下命令,构建shell应用程序的SSR版本:

      yarn build:core:lib
      
       yarn build --prod
      
      yarn build:ssr
      
       yarn serve:ssr
      
      通过运行以下命令,使用SSR服务器启动Spartacus:

      yarn build:core:lib
      
       yarn build --prod
      
      yarn build:ssr
      
       yarn serve:ssr
      

      你好,大卫,你能提供更多信息吗:.1。哪些API调用失败(全部失败?)2。SSR是否正常工作,也就是说,如果在Chrome控制台中禁用JavasScript,是否可以看到呈现的静态视图?(您还可以检查页面源中是否存在呈现的HTML)。