From 6795f681ef42528d42703ae2d0382ed069fa01c7 Mon Sep 17 00:00:00 2001 From: Tim Neutkens Date: Sun, 16 Dec 2018 01:56:27 +0100 Subject: [PATCH] Make sure WebSocket server port is always detected (#5894) --- packages/next/server/hot-reloader.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/next/server/hot-reloader.js b/packages/next/server/hot-reloader.js index 72ccbddf..e31dfd9b 100644 --- a/packages/next/server/hot-reloader.js +++ b/packages/next/server/hot-reloader.js @@ -172,11 +172,18 @@ export default class HotReloader { async start () { await this.clean() - await new Promise(resolve => { + this.wsPort = await new Promise((resolve, reject) => { // create dynamic entries WebSocket - this.wss = new WebSocket.Server({ port: 0 }, () => { - this.wsPort = this.wss.address().port - resolve() + this.wss = new WebSocket.Server({ port: 0 }, function (err) { + if (err) { + return reject(err) + } + + const {port} = this.address() + if (!port) { + return reject(new Error('No websocket port could be detected')) + } + resolve(port) }) })