Я пытаюсь сделать очень простую вещь, обслуживать приложение реагирования с Flask, но все предложения в других темах не работают, и это становится разочаровывающим.
У меня есть структура каталогов это выглядит так:
client
build
static
index.html
Итак, все файлы JS / CSS находятся в каталоге stati c. Я последовал обычному совету и придумал следующее:
app = Flask(__name__, static_folder='../client/build')
@app.route("/")
def serve():
"""serves React App"""
return send_from_directory(app.static_folder, "index.html")
@app.route("/static/<path:path>")
def static_proxy(path):
"""static folder serve"""
file_name = path.split("/")[-1]
dir_name = os.path.join(app.static_folder, "/".join(path.split("/")[:-1]))
return send_from_directory(dir_name, file_name)
и с этим он выполняет индекс. html из каталога сборки, когда я открываю root url. Однако проблема возникает при загрузке индекса. html, поскольку все файлы stati c являются ссылками, подобными этой static/js/file.js
, которая переводится в запрос GET - localhost/static/js/file.js
и не может быть найдена. Я понял, что для того, чтобы удачно набрать static/js/file.js
, мне нужно использовать этот URL localhost/build/static/js/file.js
.
Итак, для доступа к файлам stati c мне нужно добавить build
префикс везде. Есть ли лучший способ решить эту проблему?