Handle errors better
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
import type { Plugin } from "esbuild";
|
||||
import { type Plugin } from "esbuild";
|
||||
import type { PageFiles } from "../../../types";
|
||||
import { log } from "../../../utils/log";
|
||||
import grabArtifactsFromBundledResults from "../grab-artifacts-from-bundled-result";
|
||||
|
||||
let buildStart = 0;
|
||||
let build_starts = 0;
|
||||
const MAX_BUILD_STARTS = 10;
|
||||
const MAX_BUILD_STARTS = 2;
|
||||
|
||||
type Params = {
|
||||
entryToPage: Map<
|
||||
@@ -24,15 +24,21 @@ export default function esbuildCTXArtifactTracker({
|
||||
const artifactTracker: Plugin = {
|
||||
name: "artifact-tracker",
|
||||
setup(build) {
|
||||
build.onStart(() => {
|
||||
build.onStart(async () => {
|
||||
build_starts++;
|
||||
buildStart = performance.now();
|
||||
|
||||
if (build_starts == MAX_BUILD_STARTS) {
|
||||
const error_msg = `Build Failed. Please check all your components and imports.`;
|
||||
log.error(error_msg);
|
||||
|
||||
global.BUNDLER_CTX_DISPOSED = true;
|
||||
|
||||
global.RECOMPILING = false;
|
||||
global.IS_SERVER_COMPONENT = false;
|
||||
|
||||
await global.BUNDLER_CTX?.dispose();
|
||||
global.BUNDLER_CTX = undefined;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -48,6 +54,22 @@ export default function esbuildCTXArtifactTracker({
|
||||
return;
|
||||
}
|
||||
|
||||
// if (result.errors.length) {
|
||||
// console.error(
|
||||
// esbuild.formatMessagesSync(result.errors, {
|
||||
// kind: "error",
|
||||
// }),
|
||||
// );
|
||||
// }
|
||||
|
||||
// if (result.warnings.length) {
|
||||
// console.warn(
|
||||
// esbuild.formatMessagesSync(result.warnings, {
|
||||
// kind: "warning",
|
||||
// }),
|
||||
// );
|
||||
// }
|
||||
|
||||
const artifacts = grabArtifactsFromBundledResults({
|
||||
result,
|
||||
entryToPage,
|
||||
|
||||
@@ -42,6 +42,7 @@ declare global {
|
||||
var REACT_IMPORTS_MAP: { imports: Record<string, string> };
|
||||
var REACT_DOM_SERVER: any;
|
||||
var REACT_DOM_MODULE_CACHE: Map<string, { main: any; css: string }>;
|
||||
var BUNDLER_CTX_DISPOSED: boolean | undefined;
|
||||
}
|
||||
|
||||
const dirNames = grabDirNames();
|
||||
|
||||
@@ -60,7 +60,12 @@ export default async function watcherEsbuildCTX() {
|
||||
global.IS_SERVER_COMPONENT = true;
|
||||
}
|
||||
|
||||
await global.BUNDLER_CTX?.rebuild();
|
||||
if (global.BUNDLER_CTX && !global.BUNDLER_CTX_DISPOSED) {
|
||||
await global.BUNDLER_CTX.rebuild();
|
||||
} else {
|
||||
await fullRebuild({ msg: `Restarting Bundler ...` });
|
||||
global.BUNDLER_CTX_DISPOSED = false;
|
||||
}
|
||||
|
||||
if (filename.match(/(404|500)\.tsx?/)) {
|
||||
for (
|
||||
|
||||
@@ -8,7 +8,6 @@ import type {
|
||||
GrabTSXModuleSingleParams,
|
||||
} from "../../../types";
|
||||
import { existsSync, unlinkSync } from "fs";
|
||||
import { log } from "../../../utils/log";
|
||||
|
||||
const { PAGES_DIR, BUNX_CWD_MODULE_CACHE_DIR } = grabDirNames();
|
||||
|
||||
@@ -102,6 +101,7 @@ async function buildEntries({ entries, clean_cache }: BuildEntriesParams) {
|
||||
jsx: "automatic",
|
||||
outdir: BUNX_CWD_MODULE_CACHE_DIR,
|
||||
plugins: [virtualPlugin, tailwindEsbuildPlugin],
|
||||
logLevel: "silent",
|
||||
});
|
||||
}
|
||||
|
||||
@@ -128,13 +128,24 @@ export default async function grabTsxStringModule<T>(
|
||||
params: Params,
|
||||
): Promise<T | T[]> {
|
||||
if (isBatch(params)) {
|
||||
await buildEntries({ entries: params.tsx_map });
|
||||
try {
|
||||
await buildEntries({ entries: params.tsx_map });
|
||||
} catch (error) {
|
||||
console.error(`SSR Batch Build Error\n`);
|
||||
console.log(error);
|
||||
}
|
||||
return Promise.all(
|
||||
params.tsx_map.map((entry) => loadEntry<T>(entry.page_file_path)),
|
||||
);
|
||||
}
|
||||
|
||||
await buildEntries({ entries: [params], clean_cache: true });
|
||||
try {
|
||||
await buildEntries({ entries: [params], clean_cache: true });
|
||||
} catch (error) {
|
||||
console.error(`SSR Single Build Error\n`);
|
||||
console.log(error);
|
||||
}
|
||||
|
||||
return loadEntry<T>(params.page_file_path);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user