将斯巴达克斯部署到 Heroku

Deploy Spartacus to Heroku

我一直在尝试将我的 SAP Spartacus 应用程序部署到 Heroku。

在我的 package.json 的脚本部分我添加了 "start": "node server.ts",

这是我正在使用的server.ts:

const express = require('express');
const path = require('path');
const app = express();
app.use(express.static(__dirname + '/src/spartacus-mystore'));
app.get('/*', function (req,res){
  res.sendFile(path.join(__dirname+
    '/src/spartacus-mystore/index.html'));});
app.listen(process.env.PORT || 8080);

我还是不知道,但是这个文件有问题。在 Heroku 的控制台中,我看到一切正确,应用程序已成功部署,但是当我到达它时,我只看到一个空白页面。

HTML 回来了吗?或者什么都没有。

我看到你在你的 src/ 目录上 运行 express,你为什么不在你的 heroku 实例上构建然后静态地提供 dist/ 目录?

可能是您的后端未批准来自 Heroku URL 的请求,因此 Spartacus 未收到任何数据。 CORS 问题在这里很常见 ;-)

https://sap.github.io/spartacus-docs/cors/#setting-up-cors

我按照以下步骤解决了这个问题:

  1. 我在 package.json 的脚本部分添加了 "heroku-postbuild": "ng build --prod"

  2. 我将 @angular/compiler、@angular/compiler-cli、@angular-devkit/build-angular 和 @angular-devkit/schematics 从 devDependencies 复制到 dependencies

  3. 我根据 Erik 的评论更改我的 serve.ts

    const express = require('express'); const path = require('path'); const app = express(); app.use(express.static(__dirname + '/dist/mystore/browser')); app.get('/*', 函数 (req,res){ res.sendFile(path.join(__dirname+ '/dist/mystore/browser/index.html'));}); app.listen(process.env.PORT || 8080);

现在可以使用了https://spartacus-mystore.herokuapp.com/electronics-spa/en/USD/