将有角度的应用程序部署到heroku时出错

时间:2018-10-29 10:56:36

标签: angular typescript heroku

我试图通过github将一个有角度的应用程序“ test-app”部署到heroku,并且一切正常,但是我无法设置快速路由功能。我尝试了各种路径,但是heroku只是出现了这个错误。

  

错误:ENOENT:没有这样的文件或目录,stat'/app/test-app/index.html'

以下是我的“ server.js”文件

const express = require("express");
const path = require("path");
const app = express();

app.use(express.static(__dirname + "/dist"));

app.get("/*", function(req, res) {
res.sendFile(path.join(__dirname, "/dist/test-app/index.html"));
});

app.listen(process.env.PORT || 8080, () => {
console.log("Connected to the server");
});

我认为我在“路径连接”部分弄乱了某些内容。有人可以在这里帮助我吗?

1 个答案:

答案 0 :(得分:0)

您是否使用ng build来构建角度应用程序? 如果是,那么您是否将构建的输出放入dist文件夹中?

我建议以下几点: 1.分离快递服务器和角度应用程序。 2.构建您的有角度的应用程序,然后将输出(仅html和js文件而不是具有项目名称的文件夹)复制到您的express应用程序中的目录中(可以说您也将其命名为dist)。 3.在Express应用程序中,您仅需要以下内容:app.use(express.static(__dirname + "/dist"));而不是

app.get("/*", function(req, res) {
res.sendFile(path.join(__dirname, "/dist/test-app/index.html"));
});. 

即使将express和angular应用程序放在同一个工作区中,也可以使其仅与第3部分一起使用,但是最好将它们分开,因为它们是彼此交互但可能需要交互的两个不同实体大量开发。

编辑:记录__dirname并查看其显示内容。大多数情况下,app.use(express.static("dist"));就足够了。