initial
This commit is contained in:
@@ -0,0 +1,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 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user