Angular /节点Express +培养瓶API + Heroku,不确定过程文件

t98cgbkg  于 2023-03-03  发布在  Angular
关注(0)|答案(1)|浏览(103)

所以我应用程序是由Express本地提供的,使用的是flask API,所以运行起来
node server.jspython runner.py将启动前端/后端。
然而,当部署到heroku时,似乎只有前端在没有任何flask API连接的情况下工作,没有加载后端资源。
这是我的两个dynos的记录

web: node server.js
server: python runner.py

因此,当我在应用程序部署后导航到它时,只有前端内容在工作。
然而,当我在本地机器上运行python runner.py时,Heroku上的所有后端内容都开始工作了,我真的不知道这是如何或为什么工作的,但我希望Heroku处理托管API的问题。
如果有人有任何提示或建议,我会很感激的。
Runner.py

import os
from flask import Flask, request, jsonify, json, render_template
from flask_cors import CORS

app = Flask(__name__)

CORS(app)

# Runs the application
if __name__ == "__main__":
    app.run(debug=True)

Server.js

const express = require('express');
const path = require('path');

const app = express();

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

app.get('/*', function(req,res) {

res.sendFile(path.join(__dirname+'/dist/client/index.html'));
});

app.listen(process.env.PORT || 8080);

软件包. json脚本

"scripts": {
    "ng": "ng",
    "start": "ng serve --proxy-config proxy.conf.json",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "heroku-postbuild": "ng build --prod"
  }

Proxy.conf.json

{
    "/api": {
        "target": "http://localhost:5000",
        "secure": false
    }
}

编辑:可能已发现问题-https://stackoverflow.com/a/54381386/12314065
会给予一下,然后回来报告。

iswrvxsc

iswrvxsc1#

我在Heroku单台测力计上主持Angular/Flask项目的方式是:
程序文件:

web: gunicorn wsgi:app

Runtime.txt:

python-3.7.6

wsgi.py

from app import app 

if __name__ == "__main__": 
        app.run()

app.py

from flask import Flask,render_template, request, jsonify
from flask_compress import Compress

# initialize flask application
app = Flask(__name__,static_url_path='',static_folder='dist',template_folder='dist')
Compress(app)

@app.route('/')
def test():
    return render_template("index.html")

if __name__ == '__main__':
    # run web server
    app.run()

Package.json脚本:

"scripts": {
        "ng": "ng",
        "start": "ng serve --proxy-config proxy.conf.json",
        "build": "ng build --aot --prod",
        "test": "echo \"Error: no test... minimal project\" && exit 1",
        "lint": "echo \"Error: no lint... minimal project\" && exit 1",
        "e2e": "echo \"Error: no e2e... minimal project\" && exit 1"
    }

项目文件:

其工作原理是:
1.在Heroku中添加NodeJSPython构建包。
1.在根文件夹中创建Requirements.txt和Runtime.txt。

  1. package.json也必须存在于根文件夹中。
    1.部署包。
    1.构建Angular项目并存储在dist文件夹中,该文件夹作为 flask 应用程序的参数传递。
  2. Flask应用程序使用此静态文件夹存储网页内容。

相关问题