diff --git a/lib/Server.js b/lib/Server.js index 2810485665..c129fda7db 100644 --- a/lib/Server.js +++ b/lib/Server.js @@ -200,8 +200,12 @@ class Server { return level; }; + const configs = getCompilerConfigArray(this.compiler); + const configWithDevServer = + configs.find((config) => config.devServer) || configs[0]; + proxyOptions.logLevel = getLogLevelForProxy( - this.compiler.options.infrastructureLogging.level + configWithDevServer.infrastructureLogging.level ); proxyOptions.logProvider = () => this.logger; diff --git a/test/server/proxy-option.test.js b/test/server/proxy-option.test.js index cece6089d9..da7bf6ce51 100644 --- a/test/server/proxy-option.test.js +++ b/test/server/proxy-option.test.js @@ -474,4 +474,42 @@ describe('proxy option', () => { req.delete('/delete').expect(200, 'DELETE method from proxy', done); }); }); + + describe('should work in multi compiler mode', () => { + let server; + let req; + let closeProxyServers; + + beforeAll((done) => { + closeProxyServers = startProxyServers(); + server = testServer.start( + [config, config], + { + static: { + directory: contentBase, + watch: false, + }, + proxy: { + '*': { + context: () => true, + target: `http://localhost:${port1}`, + }, + }, + port: port3, + }, + done + ); + req = request(server.app); + }); + + afterAll((done) => { + testServer.close(() => { + closeProxyServers(done); + }); + }); + + it('respects a proxy option', (done) => { + req.get('/proxy1').expect(200, 'from proxy1', done); + }); + }); });