升级到 Spartacus v3.0 后 SSR 停止工作

SSR stop working after upgrade to Spartacus v3.0

自升级到 Spartacus v3.0 SSR 后停止使用此输出:

Unknown http response error: -1
Unknown http response error: -1
SSR rendering exceeded timeout, fallbacking to CSR for /

第一次渲染的每条路线都会发生这种情况,然后回退到 CSR。

我试图将超时提高到更高的值,但这没有帮助:

server.ts

...

const ngExpressEngine = NgExpressEngineDecorator.get(engine, { timeout: 10000 });

...

当我创建一个新的 Angular 应用程序并添加 Spartacus 原理图时,我得到了相同的行为。知道如何调试吗?

  1. Unknown http response error: -1 可能表示与后端服务器的连接存在问题,您是否检查过是否一切正常?

如果服务器确实缺少正确的 ssl 证书,请尝试添加

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';

到server.ts(仅用于调试!)

  1. 您还可以完全禁用超时和 Spartacus 内置 SSR 优化:
const ngExpressEngine = NgExpressEngineDecorator.get(engine, null);
  1. 您还可以调试 SSR 服务器,如文档中所述 (https://sap.github.io/spartacus-docs/how-to-debug-server-side-rendered-storefront/#nodejs-debugging-in-vs-code)

设置为package.json后,SSR开始工作:

"scripts": {
    "dev:ssr": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 ng run mystore:serve-ssr",
},
[...]
"devDependencies": {
    [...]
    "cross-env": "^7.0.0"
}

你需要运行

yarn dev:ssr