在Flask中运行NPM Build

3

我有一个React前端,希望将其与我的Python后端API在同一个源上提供服务。我试图使用Flask实现这个目标,但是遇到了一个问题,即Flask找不到我的静态文件。

我的前端构建是通过在saas_frontend中运行npm run build生成的。

以下是我的文件结构:

    ├── main.py
    ├── requirements.txt
    ├── run.sh
    ├── saas_backend
    ├── saas_frontend

Flask正在从main.py运行,并在saas_frontend/build中提供我的前端:

├── asset-manifest.json
├── favicon.ico
├── index.html
├── manifest.json
├── service-worker.js
└── static
    ├── css
    │   ├── main.096c9e23.css
    │   └── main.096c9e23.css.map
    ├── js
    │   ├── main.8949f17a.js
    │   └── main.8949f17a.js.map
    └── media
        ├── delta.56f5d855.csv
        └── logo.e233ff84.png

我在main.py中声明了新的模板路径和静态路径,如下所示:

import os
from flask import Flask, render_template

template_dir = os.path.abspath('saas_frontend/build/')
static_dir   = os.path.abspath('saas_frontend/build/static')
app = Flask(__name__, static_path=static_dir, template_folder=template_dir)


@app.route('/')
def index():
    print template_dir
    print static_dir                                                                                                                                                                                    
    return render_template('index.html')

但是Flask仍然无法提供我的静态文件,我得到了以下输出....

127.0.0.1 - - [21/Jul/2017 12:13:14] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [21/Jul/2017 12:13:14] "GET /static/css/main.096c9e23.css HTTP/1.1" 404 -
127.0.0.1 - - [21/Jul/2017 12:13:14] "GET /static/js/main.8949f17a.js HTTP/1.1" 404 -
127.0.0.1 - - [21/Jul/2017 12:13:14] "GET /static/css/main.096c9e23.css HTTP/1.1" 404 -
127.0.0.1 - - [21/Jul/2017 12:13:14] "GET /static/js/main.8949f17a.js HTTP/1.1" 404 -

有什么我应该做的不同吗?Flask如何在错误消息中解析正确的文件路径,但却完全无法将其提供给浏览器呢?

谢谢!


@A.Haaji 很遗憾,出现了完全相同的错误。 - Cole
1个回答

3

我通过使用符号链接到相应的文件和目录解决了我的问题。

在我的构建脚本中,我将包含:

ln -s saas_frontend/build/static static
ln -s saas_frontend/build templates

现在一切都如预期的那样工作了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接