From d9d747c9a8d577374b7e2653ddbe08259c1acc97 Mon Sep 17 00:00:00 2001 From: Clark Du Date: Tue, 6 Mar 2018 16:14:34 +0800 Subject: [PATCH] refator: only throw jsdomerror in window initialization --- lib/core/renderer.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/core/renderer.js b/lib/core/renderer.js index 996ef6ff6e..f35275f833 100644 --- a/lib/core/renderer.js +++ b/lib/core/renderer.js @@ -421,12 +421,18 @@ module.exports = class Renderer { window.scrollTo = () => {} } } + const jsdomErrHandler = err => { throw err } if (opts.virtualConsole !== false) { - options.virtualConsole = new jsdom.VirtualConsole().sendTo(console, { omitJSDOMErrors: true }) - options.virtualConsole.on('jsdomError', err => { throw err }) + options.virtualConsole = new jsdom.VirtualConsole().sendTo(console, { omitJSDOMErrors: false }) + // throw error when window creation failed + options.virtualConsole.on('jsdomError', jsdomErrHandler) } url = url || 'http://localhost:3000' const { window } = await jsdom.JSDOM.fromURL(url, options) + if (opts.virtualConsole !== false) { + // after window initialized successfully + options.virtualConsole.removeListener('jsdomError', jsdomErrHandler) + } // If Nuxt could not be loaded (error from the server-side) const nuxtExists = window.document.body.innerHTML.includes( this.options.render.ssr ? 'window.__NUXT__' : '
'