Spaces:
Running
Running
File size: 1,646 Bytes
d530f14 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | import { NextRequest, NextResponse } from 'next/server';
declare global {
var viteErrors: any[];
}
// Initialize global viteErrors array if it doesn't exist
if (!global.viteErrors) {
global.viteErrors = [];
}
export async function POST(request: NextRequest) {
try {
const { error, file, type = 'runtime-error' } = await request.json();
if (!error) {
return NextResponse.json({
success: false,
error: 'Error message is required'
}, { status: 400 });
}
// Parse the error to extract useful information
const errorObj: any = {
type,
message: error,
file: file || 'unknown',
timestamp: new Date().toISOString()
};
// Extract import information if it's an import error
const importMatch = error.match(/Failed to resolve import ['"]([^'"]+)['"] from ['"]([^'"]+)['"]/);
if (importMatch) {
errorObj.type = 'import-error';
errorObj.import = importMatch[1];
errorObj.file = importMatch[2];
}
// Add to global errors array
global.viteErrors.push(errorObj);
// Keep only last 50 errors
if (global.viteErrors.length > 50) {
global.viteErrors = global.viteErrors.slice(-50);
}
console.log('[report-vite-error] Error reported:', errorObj);
return NextResponse.json({
success: true,
message: 'Error reported successfully',
error: errorObj
});
} catch (error) {
console.error('[report-vite-error] Error:', error);
return NextResponse.json({
success: false,
error: (error as Error).message
}, { status: 500 });
}
} |