lrj
19 小时以前 9f8395fab13ca4b230a0f7d62636e209745c91d4
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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);