const axios = require('axios'); async function testFriendlyErrors() { console.log('🔍 测试友好错误信息'); console.log('='.repeat(50)); const graphqlUrl = 'http://localhost:8080/api/graphql'; // 测试1: 新版API - 无效code console.log('1️⃣ 测试新版API - 无效code'); try { const query1 = ` mutation { getPhoneNumberByCode(code: "invalid_test_code_12345") { phoneNumber purePhoneNumber countryCode } } `; const response1 = await axios.post(graphqlUrl, { query: query1 }); if (response1.data.errors) { console.log('错误信息:', response1.data.errors[0].message); // 检查是否包含友好的错误信息 const errorMsg = response1.data.errors[0].message; if (errorMsg.includes('授权码已过期或无效')) { console.log('✅ 友好错误信息正常工作'); } else if (errorMsg.includes('RuntimeException')) { console.log('⚠️ 仍显示技术错误信息:', errorMsg); } else { console.log('📝 错误信息:', errorMsg); } } } catch (error) { console.log('❌ 请求异常:', error.message); } // 测试2: 旧版API - 无效数据 console.log('\n2️⃣ 测试旧版API - 无效数据'); try { const query2 = ` mutation { decryptPhoneNumber( encryptedData: "invalid_data" iv: "invalid_iv" sessionKey: "invalid_session_key" ) { phoneNumber purePhoneNumber countryCode } } `; const response2 = await axios.post(graphqlUrl, { query: query2 }); if (response2.data.errors) { console.log('错误信息:', response2.data.errors[0].message); // 检查是否包含友好的错误信息 const errorMsg = response2.data.errors[0].message; if (errorMsg.includes('授权数据格式错误') || errorMsg.includes('授权数据已过期')) { console.log('✅ 友好错误信息正常工作'); } else if (errorMsg.includes('RuntimeException')) { console.log('⚠️ 仍显示技术错误信息:', errorMsg); } else { console.log('📝 错误信息:', errorMsg); } } } catch (error) { console.log('❌ 请求异常:', error.message); } // 测试3: 空code参数 console.log('\n3️⃣ 测试空code参数'); try { const query3 = ` mutation { getPhoneNumberByCode(code: "") { phoneNumber purePhoneNumber countryCode } } `; const response3 = await axios.post(graphqlUrl, { query: query3 }); if (response3.data.errors) { console.log('错误信息:', response3.data.errors[0].message); } } catch (error) { console.log('❌ 请求异常:', error.message); } console.log('\n🔧 诊断结果:'); console.log('如果仍然显示"RuntimeException",可能的原因:'); console.log('1. GraphQL异常处理器覆盖了我们的友好错误信息'); console.log('2. 需要修改GraphQL配置以传递原始错误信息'); console.log('3. 异常在传递过程中被包装了'); } testFriendlyErrors().catch(console.error);