#!/usr/bin/env python3 # -*- coding: utf-8 -*- import re def fix_mockdata_syntax(): """修复mockData.js的语法错误""" file_path = 'src/data/mockData.js' try: with open(file_path, 'r', encoding='utf-8') as f: content = f.read() print("开始修复语法错误...") # 找到第一个profileOverview定义的结束位置 # 查找模式:第一个profileOverview后面跟着的}; first_profile_end = re.search(r'mockData\.profileOverview = \{[\s\S]*?\};', content) if first_profile_end: print(f"找到第一个profileOverview定义,结束位置: {first_profile_end.end()}") # 检查第一个profileOverview后面是否紧跟第二个profileOverview after_first = content[first_profile_end.end():] second_profile_start = re.search(r'// 添加Profile个人档案页面数据\s*mockData\.profileOverview', after_first) if second_profile_start: print("发现重复的profileOverview定义") # 删除第一个profileOverview定义 content_before_first = content[:first_profile_end.start()] content_after_first = content[first_profile_end.end():] # 重新组合内容,去掉第一个profileOverview fixed_content = content_before_first + content_after_first print("已删除重复的profileOverview定义") else: print("未发现重复定义,检查其他语法问题...") fixed_content = content else: print("未找到profileOverview定义") fixed_content = content # 修复可能的多余逗号和括号问题 # 查找并修复 },\n },\n }; 这样的模式 fixed_content = re.sub(r'},\s*},\s*};', '};\n\n', fixed_content) # 查找并修复 },\n },\n };\n 这样的模式 fixed_content = re.sub(r'},\s*}\s*};\s*\n\s*// 添加Profile', '};\n\n// 添加Profile', fixed_content) # 保存修复后的文件 with open(file_path, 'w', encoding='utf-8') as f: f.write(fixed_content) print("语法错误修复完成!") # 验证修复结果 try: import subprocess result = subprocess.run(['node', '-c', file_path], capture_output=True, text=True) if result.returncode == 0: print("✅ JavaScript语法检查通过!") else: print(f"❌ JavaScript语法仍有错误: {result.stderr}") # 尝试更精确的修复 print("尝试更精确的修复...") with open(file_path, 'r', encoding='utf-8') as f: content = f.read() # 找到问题行附近的内容 lines = content.split('\n') for i, line in enumerate(lines): if i >= 1200 and i <= 1210: print(f"第{i+1}行: {line}") except Exception as e: print(f"语法检查时出错: {e}") except Exception as e: print(f"修复过程中出错: {e}") if __name__ == "__main__": fix_mockdata_syntax()