daShangDao_miniProgram/temp_brace_check.js
2026-06-15 16:37:57 +08:00

84 lines
2.6 KiB
JavaScript

const fs = require('fs');
const path = 'D:\\project\\zhizhu\\components\\PhotoUploadForm.vue';
const content = fs.readFileSync(path, 'utf8');
const lines = content.split('\n');
// 更精确的括号计数 - 考虑字符串和注释
let scriptStart = -1;
let scriptEnd = -1;
for (let i = 0; i < lines.length; i++) {
if (lines[i].includes('<script>') || lines[i].includes('<script ')) {
scriptStart = i;
}
if (lines[i].includes('</script>')) {
scriptEnd = i;
break;
}
}
console.log(`Script section: line ${scriptStart + 1} to ${scriptEnd + 1}`);
// 简单统计 script 区域的括号
let braceCount = 0;
let parenCount = 0;
let bracketCount = 0;
let problematicLines = [];
for (let i = scriptStart; i <= scriptEnd; i++) {
const line = lines[i];
// 跳过单行注释
const codeOnly = line.replace(/\/\/.*$/, '').replace(/\/\*.*?\*\//g, '');
const opens = (codeOnly.match(/{/g) || []).length;
const closes = (codeOnly.match(/}/g) || []).length;
const diff = opens - closes;
braceCount += diff;
// 记录大幅度变化的行
if (Math.abs(diff) >= 2) {
problematicLines.push({ line: i + 1, diff, count: braceCount, content: line.trim().substring(0, 80) });
}
}
console.log('\nFinal brace count:', braceCount);
// 逐行追踪括号变化,找到不平衡的位置
console.log('\n=== Tracking brace count at key points ===');
braceCount = 0;
let keyPoints = [];
for (let i = scriptStart; i <= scriptEnd; i++) {
const line = lines[i];
const codeOnly = line.replace(/\/\/.*$/, '').replace(/\/\*.*?\*\//g, '');
const opens = (codeOnly.match(/{/g) || []).length;
const closes = (codeOnly.match(/}/g) || []).length;
braceCount += opens - closes;
// 记录方法声明和结束
if (line.match(/\s+(async\s+)?\w+\([^)]*\)\s*{/) ||
line.match(/^\s+\},\s*$/) ||
line.match(/^\s+\};\s*$/)) {
keyPoints.push({ line: i + 1, count: braceCount, content: line.trim().substring(0, 60) });
}
}
// 找出 count=0 的位置(可能是 methods 对象结束)
console.log('\nPoints where braceCount = 0:');
keyPoints.filter(p => p.count === 0).forEach(p => {
console.log(` Line ${p.line}: ${p.content}`);
});
// 找出 count 变化最大的区域
console.log('\nProblematic lines (large brace count changes):');
problematicLines.forEach(p => {
console.log(` Line ${p.line}: diff=${p.diff}, count=${p.count}, content: ${p.content}`);
});
// 特别检查 methods 区域
console.log('\n=== Methods area key structure ===');
keyPoints.filter(p => p.line >= 398 && p.line <= 2000).forEach(p => {
console.log(` Line ${p.line}: count=${p.count}, ${p.content}`);
});