我正在设置我的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需要加载什么,什么不需要
如果需要更多信息或更多图片,我很乐意提供,因为我似乎很难找到答案。感谢您的宝贵时间。
答案 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"