Skip to content

Commit

Permalink
fix: logger maybe undefined when server occur error (#5884)
Browse files Browse the repository at this point in the history
  • Loading branch information
GiveMe-A-Name committed Jun 27, 2024
1 parent ea60c80 commit 5525a23
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 18 deletions.
7 changes: 7 additions & 0 deletions .changeset/orange-cows-yawn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@modern-js/prod-server': patch
'@modern-js/server-core': patch
---

fix: logger maybe undefined when server occur error
fix: logger 可能是 undefined 当 server 发生错误时
1 change: 0 additions & 1 deletion packages/runtime/plugin-runtime/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,6 @@
"@types/cookie": "0.5.1",
"@modern-js/app-tools": "workspace:*",
"@modern-js/core": "workspace:*",
"@modern-js/server-core": "workspace:*",
"@remix-run/web-fetch": "^4.1.3",
"@scripts/build": "workspace:*",
"@scripts/jest-config": "workspace:*",
Expand Down
2 changes: 1 addition & 1 deletion packages/server/core/src/plugins/render/render.ts
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ export async function createRender({
);

const onError = async (e: unknown) => {
onErrorFn(logger, ErrorDigest.ERENDER, e as string | Error, req);
onErrorFn(ErrorDigest.ERENDER, e as string | Error, logger, req);
await onFallback?.('error', e);
};

Expand Down
38 changes: 27 additions & 11 deletions packages/server/core/src/utils/error.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import type { Logger } from '@modern-js/types';
import { parseHeaders } from './request';

const ERROR_PAGE_TEXT: Record<number, string> = {
404: 'This page could not be found.',
Expand Down Expand Up @@ -50,20 +51,35 @@ export enum ErrorDigest {
}

export function onError(
logger: Logger,
digest: ErrorDigest,
error: Error | string,
logger?: Logger,
req?: Request,
) {
const headers = req?.headers;
headers?.delete('cookie');
const headerData = req && parseHeaders(req);

logger.error(
req
? `Server Error - ${digest}, error = %s, req.url = %s, req.headers = %o`
: `Server Error - ${digest}, error = %s`,
error instanceof Error ? error.stack || error.message : error,
req?.url,
headers,
);
headerData && delete headerData.cookie;

if (logger) {
logger.error(
req
? `Server Error - ${digest}, error = %s, req.url = %s, req.headers = %o`
: `Server Error - ${digest}, error = %s`,
error instanceof Error ? error.stack || error.message : error,
req?.url,
headerData,
);
} else if (req) {
console.error(
`Server Error - ${digest}, error = ${
error instanceof Error ? error.stack || error.message : error
}, req.url = ${req.url}, req.headers = ${JSON.stringify(headerData)}`,
);
} else {
console.error(
`Server Error - ${digest}, error = ${
error instanceof Error ? error.stack || error.message : error
} `,
);
}
}
4 changes: 2 additions & 2 deletions packages/server/prod-server/src/apply.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,13 @@ export async function applyPlugins(

serverBase.notFound(c => {
const logger = c.get('logger');
onError(logger, ErrorDigest.ENOTF, '404 not found', c.req.raw);
onError(ErrorDigest.ENOTF, '404 not found', logger, c.req.raw);
return c.html(createErrorHtml(404), 404);
});

serverBase.onError((err, c) => {
const logger = c.get('logger');
onError(logger, ErrorDigest.EINTER, err, c.req.raw);
onError(ErrorDigest.EINTER, err, logger, c.req.raw);
return c.html(createErrorHtml(500), 500);
});

Expand Down
3 changes: 0 additions & 3 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 5525a23

Please sign in to comment.