Leon4gr45's picture
Deploy to clean space
75fefa7 verified
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 });
}
}