fix: improve error handling and logging for extractor and cleaner

- Load .env file in main process using dotenv
- Add detailed console logging for debugging
- Add validation for ERP configuration before extraction
- Improve error display in UI with selectable text
- Add stack trace logging for better debugging
This commit is contained in:
Misaka
2026-03-01 16:07:47 +08:00
parent e794470d69
commit e04337dc19
4 changed files with 91 additions and 16 deletions

View File

@@ -16,31 +16,54 @@ export function registerCleanerHandlers(): void {
let authService: ErpAuthService | null = null
try {
// Check environment variables
const erpUrl = process.env.ERP_URL || ''
const erpUsername = process.env.ERP_USERNAME || ''
const erpPassword = process.env.ERP_PASSWORD || ''
console.log('[Cleaner] Config:', {
url: erpUrl ? '***' : 'EMPTY',
username: erpUsername ? '***' : 'EMPTY'
})
if (!erpUrl || !erpUsername || !erpPassword) {
throw new Error(
'ERP 配置不完整。请检查 .env 文件中的 ERP_URL, ERP_USERNAME, ERP_PASSWORD'
)
}
// Create auth service and login
authService = new ErpAuthService({
url: process.env.ERP_URL || '',
username: process.env.ERP_USERNAME || '',
password: process.env.ERP_PASSWORD || '',
url: erpUrl,
username: erpUsername,
password: erpPassword,
headless: true
})
console.log('[Cleaner] Logging in to ERP...')
await authService.login()
console.log('[Cleaner] Login successful')
// Create cleaner service and run cleaning
const cleaner = new CleanerService(authService)
console.log('[Cleaner] Starting cleaning:', input)
const result = await cleaner.clean(input)
console.log('[Cleaner] Cleaning completed:', result)
return { success: true, data: result }
} catch (error) {
const message = error instanceof Error ? error.message : 'Unknown error'
return { success: false, error: message }
console.error('[Cleaner] Error:', message)
console.error('[Cleaner] Stack:', error instanceof Error ? error.stack : 'N/A')
return { success: false, error: `清理失败:${message}` }
} finally {
// Clean up: close browser
if (authService) {
try {
await authService.close()
} catch {
// Ignore cleanup errors
console.log('[Cleaner] Browser closed')
} catch (closeError) {
console.warn('[Cleaner] Error closing browser:', closeError)
}
}
}