Skip to content

Flask, Build, and accessing the Static directories #3976

Closed
@cinjon

Description

@cinjon

Hi there. I'm having an awful time trying to figure out what I've messed up.

The result of running npm run build is that I have a production directory at foo/app/build/. This includes all of the good stuff, e.g. static/, index.html, manifest.json, etc. My flask app is served from foo/__init__.py and declared with app = Flask(__name__, static_folder="./app/build/static", template_folder="./app/build").

As usual, the index.html in app/build is the entry point, and it loads React at /static/js/main.<hash>.js. This works as expected. So does the /static/css/* files and so forth. What I mean by that is that if I try to serve localhost from the build, then I can visit http://localhost:5000/static/js/main..js and it will load the minified js.

However, nothing else in foo/app/build can be seen and loaded, even though the server is returning 200s when I request the root:

@a.app.route('/', methods=['GET'])
def index():
    return render_template('index.html')

@a.app.route('/<path:path>', methods=['GET'])
def any_root_path(path):
    return render_template('index.html')

This includes the inex.html, service-worker.js, the favicon.ico, and the manifest.json. If I run npm start and use a proxy to talk to the client at port 3000 and the server at port 5000 (on localhost), then everything works. That of course won't fly for production.

Any idea what's going on?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions