将MEAN堆栈应用程序部署到Heroku不会加载任何文件吗?

时间:2019-04-19 00:38:49

标签: node.js angular express heroku

我正在设置我的Web应用程序以部署到Heroku。构建成功,但是没有文件被加载,我遇到空白页和无法获取/错误消息。

我尝试了以下两种指南/解决方案,但都发现其中没有运气。 https://medium.com/@BaaniLeen/deploying-mean-stack-app-to-heroku-tips-and-tricks-5bd43a967f8c

https://devcenter.heroku.com/articles/mean-apps-restful-api

我尝试更改PROCFILE,Server.js和/bin/www.js文件的位置,以尝试让heroku实际加载东西的角度,但无济于事。

https://www.github.com/jaredana/crud上有一个指向仓库的链接,该链接与我的本地文件是最新的,因此文件结构几乎相同,只不过我的.gitignores

这是我最近的“ heroku日志--tail” https://imgur.com/btdp0sE

的图片

我还在app.js文件(声明了express()的行)中包括了以下行:

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

因为我知道当ng build运行时,它会将您的角度应用程序构建到/ dist /目录中。

所有这些都可以在我的本地计算机上运行。我在有角度的一侧运行npm start,而通常会在ng serve --proxy-config proxy.config.json上运行,而在事物的节点侧运行npm start来调用node ./bin/www。我将它们设置为node ./node/server.js,用于有角度的“开始”脚本,将node ./node/bin/www设置为节点“开始”脚本,以及包含web: npm start的procfile

我显然需要在部署应用程序时更改heroku正在运行的内容,以便不仅初始化事物的节点。但是我很难弄清heroku需要加载什么,什么不需要

如果需要更多信息或更多图片,我很乐意提供,因为我似乎很难找到答案。感谢您的宝贵时间。

1 个答案:

答案 0 :(得分:0)

我不确定您实际使用的文件,因为您的回购不同于您在此处编写的文件。

如果您在其中写入“ npm start”,则不需要Procfile;如果您没有Procfile,noku start将由heroku使用。因此,在Procfile中编写正确的启动命令,例如:

web: node ./node/server.js"

然后,您可以为开发机器使用“ npm start”。

一个明显的错误是您的dist文件夹的路径,因为express-server正在根据日志启动。如果您使用以下命令启动快速服务器,我们将在日志中看到:

node ./node/server.js"

您需要一个类似于“ ../dist/”的路径,因为您是在节点文件夹中启动express-server的,而相对的则需要退出它,因为dist-folder处于同一级别作为节点文件夹。

var distDir = "../dist/";
app.use(express.static(distDir));

另一个问题可能是安装后脚本。此脚本将在heroku上的npm安装之后但在npm run build之前运行。用heroku-postbuild替换后安装。这将取代heroku上的“ npm build”。

"postinstall": "ng build --output-path dist --prod" // replace that line with the next
"heroku-postbuild": "ng build --output-path dist --prod"