From 71ae456a7ca706ce8eaa006486d8bebf0beff7af Mon Sep 17 00:00:00 2001 From: JJ Kasper <22380829+ijjk@users.noreply.github.com> Date: Fri, 22 Feb 2019 03:22:23 -0600 Subject: [PATCH] Fix invalid ping response throwing error in client (#6397) --- .../next/client/on-demand-entries-client.js | 26 ++++++++++--------- .../next/server/on-demand-entry-handler.js | 1 + 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/packages/next/client/on-demand-entries-client.js b/packages/next/client/on-demand-entries-client.js index f51ec8c313..7829cd44e7 100644 --- a/packages/next/client/on-demand-entries-client.js +++ b/packages/next/client/on-demand-entries-client.js @@ -34,18 +34,20 @@ export default async ({ assetPrefix }) => { } evtSource.onmessage = event => { - const payload = JSON.parse(event.data) - if (payload.invalid) { - // Payload can be invalid even if the page does not exist. - // So, we need to make sure it exists before reloading. - fetch(location.href, { - credentials: 'same-origin' - }).then(pageRes => { - if (pageRes.status === 200) { - location.reload() - } - }) - } + try { + const payload = JSON.parse(event.data) + if (payload.invalid) { + // Payload can be invalid even if the page does not exist. + // So, we need to make sure it exists before reloading. + fetch(location.href, { + credentials: 'same-origin' + }).then(pageRes => { + if (pageRes.status === 200) { + location.reload() + } + }) + } + } catch (_) { /* noop */ } } } diff --git a/packages/next/server/on-demand-entry-handler.js b/packages/next/server/on-demand-entry-handler.js index 566b5f3fd7..e82de9ddfb 100644 --- a/packages/next/server/on-demand-entry-handler.js +++ b/packages/next/server/on-demand-entry-handler.js @@ -303,6 +303,7 @@ export default function onDemandEntryHandler (devMiddleware, multiCompiler, { const runPing = () => { const data = handlePing(query.page) + if (!data) return res.write('data: ' + JSON.stringify(data) + '\n\n') } const pingInterval = setInterval(() => runPing(), 5000)