If you’re seeings this error when launching Horizon in the browser, then you may be installing it wrong.

output.cdc66066c0ea.js:728 Uncaught Error: [$injector:modulerr] Failed to instantiate module horizon.app due to:
Error: [$injector:nomod] Module 'horizon.app' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

If you’re seeing the above error in the console, you also need to specify an upper constraints file to pip via the -c <upper_constraints_file> parameter.

You can find the upper-constraints.txt file in the openstack/requirements repo, remember to switch to the appropriate branch.

So if you’re installing the stable release of Horizon for Stein (which is version 15.x) you’d do:

pip install "horizon>=15.0,<16.0" -c https://opendev.org/openstack/requirements/raw/branch/stable/stein/upper-constraints.txt

Of course the official Horizon documentation points this out, and it would’ve saved me a few hours if I had actually read it instead of assumed that whatever you install from PyPI just works.