Flask:无法访问静态文件夹中的文件(404)

Jod*_*odo 5 python static-files flask http-status-code-404

我想用 Flask 提供一个 React 应用程序,但“static_folder”似乎不起作用。这是我的最小代码:

from flask import Flask
from flask_restful import Resource, Api

app = Flask(__name__, static_folder="react_app/build")
api = Api(app)

class HelloWorld(Resource):
    def get(self):
        return app.send_static_file("index.html")

api.add_resource(HelloWorld, '/')

if __name__ == '__main__':
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

在浏览器中,我可以访问http://localhost:5000,它会返回正确的index.html。但是所有静态文件(例如 css 和 js 文件)都会返回 404 错误。例如有一个文件:react_app/build/bundle.cssreact_app/build/js/some_name.js。但输入http://localhost:5000/bundle.csshttp://localhost:5000/js/some_name.js都会返回 404 未找到错误。

据我了解,如果我指定 static_folder,我应该从根 url 访问该文件夹中的所有文件。我错过了什么/误解了什么?

Dan*_*man 4

不,文档不是这么说的:

\n\n
\n
    \n
  • static_url_path \xe2\x80\x93 可用于为 Web 上的静态文件指定不同的路径。默认为static_folder文件夹的名称。
  • \n
  • static_folder \xe2\x80\x93 包含应在 static_url_path 处提供的静态文件的文件夹。默认为应用程序根路径中的“static”文件夹。
  • \n
\n
\n\n

因此,您的文件将在 localhost:5000/react_app/build 处提供。由于这可能不是您想要的,因此您static_url_path也应该传递类似“static”的值,以便您可以在 localhost:5000/static 找到文件。

\n