瀏覽代碼

Fix: track exception/rejection within single task

SukkaW 1 年之前
父節點
當前提交
78eb1f1c48
共有 1 個文件被更改,包括 10 次插入0 次删除
  1. 10 0
      Build/trace/index.ts

+ 10 - 0
Build/trace/index.ts

@@ -1,4 +1,5 @@
 import { basename, extname } from 'node:path';
+import process from 'node:process';
 import picocolors from 'picocolors';
 
 const SPAN_STATUS_START = 0;
@@ -102,6 +103,15 @@ export function task(importMetaMain: boolean, importMetaPath: string) {
 
     const dummySpan = createSpan(taskName);
     if (importMetaMain) {
+      process.on('uncaughtException', (error) => {
+        console.error('Uncaught exception:', error);
+        process.exit(1);
+      });
+      process.on('unhandledRejection', (reason) => {
+        console.error('Unhandled rejection:', reason);
+        process.exit(1);
+      });
+
       dummySpan.traceChildAsync('dummy', fn).finally(() => {
         dummySpan.stop();
         printTraceResult(dummySpan.traceResult);