webpack: Wait for bundle before serving

e919034132b0493c71c0dc6a804ad756e1d4fad0

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +10 -2Ignore whitespace
server.js+10 -2
@@ -37,7 +37,7 @@ util.inspect.defaultOptions.maxStringLength = null;
3737util.inspect.defaultOptions.depth = 4;
3838
3939// local library imports
4040import { loadPlugins } from './src/plugin-loader.js';
4141import {
4242 initUserStorage,
4343 getCsrfSecret,
@@ -440,7 +440,8 @@ app.get('/login', async (request, response) => {
440440});
441441
442442// Host frontend assets
443-app.use(getWebpackServeMiddleware());
443+const webpackMiddleware = getWebpackServeMiddleware();
444+app.use(webpackMiddleware);
444445app.use(express.static(process.cwd() + '/public', {}));
445446
446447// Public API
@@ -626,6 +627,10 @@ const tavernUrl = new URL(
626627 (':' + server_port),
627628);
628629
630+function prepareFrontendBundle() {
631+ return new Promise((resolve) => webpackMiddleware.waitUntilValid(resolve));
632+}
633+
629634/**
630635 * Tasks that need to be run before the server starts listening.
631636 */
@@ -675,6 +680,9 @@ const preSetupTasks = async function () {
675680
676681 // Add request proxy.
677682 initRequestProxy({ enabled: proxyEnabled, url: proxyUrl, bypass: proxyBypass });
683+
684+ // Wait for frontend libs to compile
685+ await prepareFrontendBundle();
678686};
679687
680688/**