error instanceof ModuleLoaderError}
19 | renderError={(error: Error, resetError) => (
20 |
21 | Failed to load {(error as ModuleLoaderError).moduleLoaderName}{' '}
22 |
33 |
34 | )}
35 | >
36 | {
39 | const loader = moduleLoader(name as string);
40 | const error = loader.getError();
41 | if (error) {
42 | throw new ModuleLoaderError(name as string, error);
43 | }
44 | const jsModule = loader.get();
45 | if (jsModule != null) {
46 | // we know we are loading a React component so we can safely cast
47 | return jsModule as unknown as React.ComponentType;
48 | }
49 | throw loader.load();
50 | }}
51 | />
52 |
53 | );
54 | }
55 |
56 | class ModuleLoaderError extends Error {
57 | moduleLoaderName: string;
58 | error: Error;
59 |
60 | constructor(moduleLoaderName: string, error: Error) {
61 | super('ModuleLoaderError: ' + error.message);
62 | this.moduleLoaderName = moduleLoaderName;
63 | this.error = error;
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/src/components/LayoutComponents.tsx:
--------------------------------------------------------------------------------
1 | /* eslint-disable jsx-a11y/anchor-is-valid */
2 | import { UrlObject } from 'url';
3 | import React from 'react';
4 | import NextLink from 'next/link';
5 |
6 | export type LayoutProps = { children?: React.ReactNode };
7 |
8 | export function Layout({ children }: LayoutProps): JSX.Element {
9 | return