diff --git a/server/render.js b/server/render.js index 109caa7df403..8684c1fa9f1b 100644 --- a/server/render.js +++ b/server/render.js @@ -4,6 +4,7 @@ import { renderToString, renderToStaticMarkup } from 'react-dom/server' import send from 'send' import generateETag from 'etag' import fresh from 'fresh' +import requireModule from './require' import getConfig from './config' import { Router } from '../lib/router' import { loadGetInitialProps, isResSent } from '../lib/utils' @@ -54,17 +55,10 @@ async function doRender (req, res, pathname, query, { const pagePath = join(dir, dist, 'dist', 'bundles', 'pages', page) const documentPath = join(dir, dist, 'dist', 'bundles', 'pages', '_document') - let Component - let Document - try { - Component = require(pagePath) - Document = require(documentPath) - } catch (err) { - const err = new Error(`Cannot find module`) - err.code = 'ENOENT' - throw err - } - + let [Component, Document] = await Promise.all([ + requireModule(pagePath), + requireModule(documentPath) + ]) Component = Component.default || Component Document = Document.default || Document const asPath = req.url diff --git a/server/require.js b/server/require.js new file mode 100644 index 000000000000..3ca13f32fb76 --- /dev/null +++ b/server/require.js @@ -0,0 +1,6 @@ +import resolve from './resolve' + +export default async function requireModule (path) { + const f = await resolve(path) + return require(f) +}