// 验证 id=1 的 key 是否在 OSS 上 + 调试脚本 const fs = require('fs'); const path = require('path'); const envTxt = fs.readFileSync(path.join(__dirname, '..', '..', 'server', '.env'), 'utf8'); const env = {}; for (const line of envTxt.split(/\r?\n/)) { const m = line.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*)\s*$/); if (m) env[m[1]] = m[2].replace(/^["']|["']$/g, ''); } const OSS = require('ali-oss'); const c = new OSS({ accessKeyId: env.OSS_ACCESS_KEY_ID, accessKeySecret: env.OSS_ACCESS_KEY_SECRET, bucket: 'rrbrr-book-audio', endpoint: 'oss-cn-shanghai.aliyuncs.com', secure: true, }); (async () => { const k = 'audio/5239bdd1-5ca6-496b-9291-9daf950a91d5/output.mp3'; try { const r = await c.head(k); console.log('✅ key 存在:', k, ' size:', r.headers && r.headers['content-length']); } catch (e) { console.log('❌ key 不存在:', k, ' code:', e.code); } // 同时列全 OSS 找该 key const all = []; let marker = null; do { const r = await c.list({ prefix: 'audio/', 'max-keys': 1000, marker }); all.push(...(r.objects || [])); marker = r.nextMarker || null; } while (marker); console.log('OSS 总文件数:', all.length); const found = all.find(o => o.name === k); console.log('直接查找结果:', found ? 'FOUND size=' + found.size : 'NOT FOUND'); // 模糊查找 const match = all.filter(o => o.name.includes('5239bdd1')); console.log('5239bdd1 模糊匹配:', match.length, '条'); for (const o of match) console.log(' ', o.name, o.size); })();