From af8934fe7fefac7d8efe4367723a6c4e126e2a1d Mon Sep 17 00:00:00 2001 From: peima Date: Sat, 1 Aug 2026 23:35:34 +0800 Subject: [PATCH] =?UTF-8?q?diag:=20FlutterError.onError=20=E5=8A=A0=20CK?= =?UTF-8?q?=5FCTX=20(widget=20=E4=B8=8A=E4=B8=8B=E6=96=87)=20=E5=AE=9A?= =?UTF-8?q?=E4=BD=8D=20RangeError=20=E6=9D=A5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 1 + tools/e2e/diag_buy.js | 14 ++++++++++++++ tools/e2e/test_buy_valid.js | 16 ++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 tools/e2e/diag_buy.js create mode 100644 tools/e2e/test_buy_valid.js diff --git a/lib/main.dart b/lib/main.dart index f2eecbe..93d6dfa 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -36,6 +36,7 @@ void main() { FlutterError.onError = (details) { FlutterError.presentError(details); print('CK_ERROR: ${details.exceptionAsString()}'); + print('CK_CTX: ${details.context.toString()}'); print('CK_STACK: ${details.stack}'); }; // Enable configureApp will cause route problem. diff --git a/tools/e2e/diag_buy.js b/tools/e2e/diag_buy.js new file mode 100644 index 0000000..31825dc --- /dev/null +++ b/tools/e2e/diag_buy.js @@ -0,0 +1,14 @@ +const { chromium } = require('playwright'); +(async () => { + const browser = await chromium.launch({ headless: true }); + const page = await (await browser.newContext({viewport:{width:1280,height:900}})).newPage(); + const logs = []; + page.on('console', m => logs.push(m.text())); + page.on('pageerror', e => logs.push('PAGEERR: ' + e.message.slice(0,150))); + page.on('response', async r => { if (r.url().includes('get-buy-service')) console.log('API:', r.status()); }); + await page.goto('http://127.0.0.1:8099/buy-service/1/pos', { waitUntil: 'load' }).catch(()=>{}); + await page.waitForTimeout(9000); + console.log('--- RangeError 相关 console ---'); + logs.filter(l => l.includes('RangeError') || l.includes('CK_ERROR') || l.startsWith('PAGEERR')).slice(0,5).forEach(l => console.log(l.slice(0,180))); + await browser.close(); +})(); diff --git a/tools/e2e/test_buy_valid.js b/tools/e2e/test_buy_valid.js new file mode 100644 index 0000000..0837420 --- /dev/null +++ b/tools/e2e/test_buy_valid.js @@ -0,0 +1,16 @@ +const { chromium } = require('playwright'); +(async () => { + const browser = await chromium.launch({ headless: true }); + const page = await (await browser.newContext({viewport:{width:1280,height:900}})).newPage(); + const errs = []; + page.on('console', m => { if (m.text().includes('RangeError')||m.text().startsWith('CK_ERROR')) errs.push(m.text().slice(0,120)); }); + page.on('response', r => { if (r.url().includes('get-buy-service')) console.log(' API:', r.url().split('get-buy-service')[1], '→', r.status()); }); + // 试几个 service 参数 + for (const p of ['/buy-service/1/ministore', '/buy-service/1/igoshow', '/buy-service/310/ministore']) { + errs.length = 0; + await page.goto('http://127.0.0.1:8099'+p, { waitUntil: 'load' }).catch(()=>{}); + await page.waitForTimeout(6000); + console.log(p, errs.length ? '✗ '+errs[0] : '✓ OK'); + } + await browser.close(); +})();