38 lines
960 B
TypeScript
38 lines
960 B
TypeScript
import type { Instrumentation } from "next";
|
|
|
|
export const onRequestError: Instrumentation.onRequestError = async (
|
|
error,
|
|
request,
|
|
context,
|
|
) => {
|
|
if (process.env.NEXT_RUNTIME !== "nodejs") return;
|
|
|
|
const { logServerError } = await import("@/lib/server-log");
|
|
logServerError("next.request_failed", error, {
|
|
path: request.path.split("?", 1)[0] ?? request.path,
|
|
method: request.method,
|
|
routePath: context.routePath,
|
|
routeType: context.routeType,
|
|
renderSource: context.renderSource,
|
|
digest:
|
|
typeof error === "object" && error !== null && "digest" in error
|
|
? String(error.digest)
|
|
: null,
|
|
});
|
|
};
|
|
|
|
export async function register() {
|
|
if (
|
|
process.env.NEXT_RUNTIME !== "nodejs" ||
|
|
process.env.NEXT_PHASE === "phase-production-build"
|
|
)
|
|
return;
|
|
const { drainFurnitureImports } = await import(
|
|
"@/lib/services/furni-job-worker"
|
|
);
|
|
const timer = setInterval(() => {
|
|
void drainFurnitureImports();
|
|
}, 30000);
|
|
timer.unref();
|
|
}
|