From f25da29930e009267a229037338e0f6423de6ebd Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Mon, 10 Feb 2020 17:16:57 -0500 Subject: [PATCH 1/3] Fail on Invalid Prerender Manifest --- packages/next/next-server/server/spr-cache.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/next/next-server/server/spr-cache.ts b/packages/next/next-server/server/spr-cache.ts index 36ccae2d4fc0e74..cc474a167566d35 100644 --- a/packages/next/next-server/server/spr-cache.ts +++ b/packages/next/next-server/server/spr-cache.ts @@ -1,11 +1,11 @@ import fs from 'fs' -import path from 'path' import LRUCache from 'lru-cache' +import mkdirpOrig from 'mkdirp' +import path from 'path' import { promisify } from 'util' import { PrerenderManifest } from '../../build' import { PRERENDER_MANIFEST } from '../lib/constants' import { normalizePagePath } from './normalize-page-path' -import mkdirpOrig from 'mkdirp' const mkdirp = promisify(mkdirpOrig) const readFile = promisify(fs.readFile) @@ -72,14 +72,12 @@ export function initializeSprCache({ !dev && (typeof flushToDisk !== 'undefined' ? flushToDisk : true), } - try { - prerenderManifest = dev - ? { routes: {}, dynamicRoutes: [] } - : JSON.parse( - fs.readFileSync(path.join(distDir, PRERENDER_MANIFEST), 'utf8') - ) - } catch (_) { - prerenderManifest = { version: 1, routes: {}, dynamicRoutes: {} } + if (dev) { + prerenderManifest = { version: -1, routes: {}, dynamicRoutes: {} } + } else { + prerenderManifest = JSON.parse( + fs.readFileSync(path.join(distDir, PRERENDER_MANIFEST), 'utf8') + ) } cache = new LRUCache({ From 4ff60c79745fb0b8d8775571f8250216cf407cd4 Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Mon, 10 Feb 2020 17:18:43 -0500 Subject: [PATCH 2/3] Make Missing Prerender Manifest Fatal --- packages/next/build/index.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/next/build/index.ts b/packages/next/build/index.ts index 1ae77d74fe3b673..94ce85aed4ac79d 100644 --- a/packages/next/build/index.ts +++ b/packages/next/build/index.ts @@ -801,6 +801,17 @@ export default async function build(dir: string, conf = null): Promise { dynamicRoutes: finalDynamicRoutes, } + await fsWriteFile( + path.join(distDir, PRERENDER_MANIFEST), + JSON.stringify(prerenderManifest), + 'utf8' + ) + } else { + const prerenderManifest: PrerenderManifest = { + version: 1, + routes: {}, + dynamicRoutes: {}, + } await fsWriteFile( path.join(distDir, PRERENDER_MANIFEST), JSON.stringify(prerenderManifest), From e70c14f0ea260252faf44e9059ec5e7d2141eb2a Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Mon, 10 Feb 2020 17:31:41 -0500 Subject: [PATCH 3/3] fix test --- .../integration/error-in-error/pages/index.js | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/test/integration/error-in-error/pages/index.js b/test/integration/error-in-error/pages/index.js index f3fd73f974b88ee..598c95376ce38ba 100644 --- a/test/integration/error-in-error/pages/index.js +++ b/test/integration/error-in-error/pages/index.js @@ -1,10 +1,16 @@ import Link from 'next/link' -export default () => ( - <> -

Hi 👋

- - a lnik to no-where - - -) +function Index() { + return ( + <> +

Hi 👋

+ + a link to no-where + + + ) +} + +Index.getInitialProps = () => ({}) + +export default Index