From 4f7aa9b9b2b8fb09d122276b786188acaba471e6 Mon Sep 17 00:00:00 2001 From: nkzawa Date: Thu, 9 Feb 2017 04:18:15 +0900 Subject: [PATCH] add next/error --- error.js | 1 + examples/with-flow/types/next.js.flow | 4 ++ lib/error.js | 69 ++++++++++++++++++++++++++ package.json | 3 +- pages/_error.js | 71 +-------------------------- server/build/babel/preset.js | 3 +- server/build/webpack.js | 1 + 7 files changed, 80 insertions(+), 72 deletions(-) create mode 100644 error.js create mode 100644 lib/error.js diff --git a/error.js b/error.js new file mode 100644 index 0000000000000..1dd94bb4d1a51 --- /dev/null +++ b/error.js @@ -0,0 +1 @@ +module.exports = require('./dist/lib/error') diff --git a/examples/with-flow/types/next.js.flow b/examples/with-flow/types/next.js.flow index b4a0b851f2ea8..bfad2ce87c9a4 100644 --- a/examples/with-flow/types/next.js.flow +++ b/examples/with-flow/types/next.js.flow @@ -20,6 +20,10 @@ declare module "next/link" { declare module.exports: Class>; } +declare module "next/error" { + declare module.exports: Class>; +} + declare module "next/prefetch" { declare export var prefetch: (url: string) => any; declare export var reloadIfPrefetched: any; diff --git a/lib/error.js b/lib/error.js new file mode 100644 index 0000000000000..7248d1dd1e066 --- /dev/null +++ b/lib/error.js @@ -0,0 +1,69 @@ +import React from 'react' +import Head from './head' + +export default class Error extends React.Component { + static getInitialProps ({ res, xhr }) { + const statusCode = res ? res.statusCode : (xhr ? xhr.status : null) + return { statusCode } + } + + render () { + const { statusCode } = this.props + const title = statusCode === 404 + ? 'This page could not be found' + : (statusCode ? 'Internal Server Error' : 'An unexpected error has occurred') + + return
+ + + +
+ - -
- } -} +module.exports = require('next/error') diff --git a/server/build/babel/preset.js b/server/build/babel/preset.js index 0ba194c055bc7..7ecc8caae769e 100644 --- a/server/build/babel/preset.js +++ b/server/build/babel/preset.js @@ -24,7 +24,8 @@ module.exports = { 'next/css': require.resolve('../../../lib/css'), 'next/head': require.resolve('../../../lib/head'), 'next/document': require.resolve('../../../server/document'), - 'next/router': require.resolve('../../../lib/router') + 'next/router': require.resolve('../../../lib/router'), + 'next/error': require.resolve('../../../lib/error') } } ] diff --git a/server/build/webpack.js b/server/build/webpack.js index 4e2406a9fac35..91490634fa3a0 100644 --- a/server/build/webpack.js +++ b/server/build/webpack.js @@ -179,6 +179,7 @@ export default async function createCompiler (dir, { dev = false, quiet = false 'next/head': require.resolve('../../lib/head'), 'next/document': require.resolve('../../server/document'), 'next/router': require.resolve('../../lib/router'), + 'next/error': require.resolve('../../lib/error'), 'styled-jsx/style': require.resolve('styled-jsx/style') } }