Merge pull request #1637 from ajnart/error-serialization-gssp

This commit is contained in:
Thomas Camlong
2023-11-14 21:13:25 +01:00
committed by GitHub
2 changed files with 15 additions and 44 deletions

View File

@@ -1,7 +1,13 @@
import { Center, Code, List, Stack, Text, Title } from '@mantine/core';
import Head from 'next/head';
export const DatabaseNotWriteable = ({ error, errorMessage }: { error: any | unknown, errorMessage: string | undefined }) => {
export const DatabaseNotWriteable = ({
stringifiedError,
errorMessage,
}: {
stringifiedError: string | undefined;
errorMessage: string | undefined;
}) => {
return (
<>
<Head>
@@ -30,11 +36,9 @@ export const DatabaseNotWriteable = ({ error, errorMessage }: { error: any | unk
</a>
</List.Item>
</List>
<Code block>{error && JSON.stringify(error)}</Code>
<Code block>{stringifiedError}</Code>
{errorMessage && (
<Code block>{errorMessage}</Code>
)}
{errorMessage && <Code block>{errorMessage}</Code>}
</Stack>
</Center>
</>

View File

@@ -15,14 +15,11 @@ import { getTotalUserCountAsync } from '~/server/db/queries/user';
import { getConfig } from '~/tools/config/getConfig';
import { getServerSideTranslations } from '~/tools/server/getServerSideTranslations';
const util = require('util');
const exec = util.promisify(require('child_process').exec);
export default function OnboardPage({
configSchemaVersions,
databaseNotWriteable,
error,
errorMessage
stringifiedError,
errorMessage,
}: InferGetServerSidePropsType<typeof getServerSideProps>) {
const { fn, colors, colorScheme } = useMantineTheme();
const background = colorScheme === 'dark' ? 'dark.6' : 'gray.1';
@@ -49,7 +46,7 @@ export default function OnboardPage({
</Center>
{databaseNotWriteable == true ? (
<DatabaseNotWriteable error={error} errorMessage={errorMessage} />
<DatabaseNotWriteable stringifiedError={stringifiedError} errorMessage={errorMessage} />
) : (
<>
{onboardingSteps ? (
@@ -117,41 +114,11 @@ export const getServerSideProps: GetServerSideProps = async (ctx) => {
...translations,
configSchemaVersions: configSchemaVersions,
databaseNotWriteable: true,
error: error,
errorMessage: 'Database is not writeable',
stringifiedError: JSON.stringify(error),
},
};
}
Consola.info('Database is writeable');
if (process.platform !== 'win32') {
try {
const { stdout, stderr } = await exec("mount | grep '/data'");
if (stderr.split('\n').length > 1 || stdout.split('\n').length <= 1) {
Consola.error(`Database at '${rawDatabaseUrl}' has not been mounted: ${stdout.replace('\n', '\\n')} ${stderr.replace('\n', '\\n')}`);
return {
props: {
...translations,
configSchemaVersions: configSchemaVersions,
databaseNotWriteable: true,
error: `Database at '${rawDatabaseUrl}' is not mounted:\n${stdout}`,
},
};
}
} catch (error) {
const errorMessage = `Database at '${rawDatabaseUrl}' has not been mounted: ${error}`;
Consola.error(errorMessage);
return {
props: {
...translations,
configSchemaVersions: configSchemaVersions,
databaseNotWriteable: true,
error: error,
errorMessage: errorMessage
},
};
}
}
Consola.info(`Database at '${rawDatabaseUrl}' is writeable and mounted`);
}
@@ -160,7 +127,7 @@ export const getServerSideProps: GetServerSideProps = async (ctx) => {
props: {
...translations,
configSchemaVersions: configSchemaVersions,
databaseNotWriteable: false
databaseNotWriteable: false,
},
};
};