备份:修复前完整项目快照 2026-04-19
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
const fs = require('fs');
|
||||
const content = fs.readFileSync('final-backend.js', 'utf8');
|
||||
const lines = content.split('\n');
|
||||
|
||||
// 找到users模块的开始(第一个app.get('/api/users')
|
||||
let startLine = -1;
|
||||
for (let i = 0; i < lines.length; i++) {
|
||||
if (lines[i].includes("app.get('/api/users'")) {
|
||||
startLine = i + 1; // 转换为1-based行号
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 找到users模块的结束(在删除用户路由之后,下一个模块开始之前)
|
||||
let endLine = -1;
|
||||
for (let i = startLine - 1; i < lines.length; i++) {
|
||||
// 找到删除用户路由的结束
|
||||
if (lines[i].includes("app.delete('/api/users/:id'")) {
|
||||
// 找到这个路由的结束(找到下一个}后跟);的行)
|
||||
for (let j = i; j < lines.length; j++) {
|
||||
if (lines[j].trim() === '});') {
|
||||
// 检查下一行是否开始新模块
|
||||
for (let k = j + 1; k < Math.min(j + 10, lines.length); k++) {
|
||||
if (lines[k].includes('app.') && lines[k].includes('/api/')) {
|
||||
const nextPath = lines[k].match(/['\"](\/api\/[^'\"]+)['\"]/);
|
||||
if (nextPath && !nextPath[1].startsWith('/api/users')) {
|
||||
endLine = j; // 结束在});这一行
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (endLine === -1) {
|
||||
endLine = j; // 如果没有找到新模块,就使用这个
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (startLine === -1 || endLine === -1) {
|
||||
console.log('❌ 无法找到users模块的边界');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log(`users模块范围:第${startLine}行到第${endLine + 1}行`);
|
||||
|
||||
// 提取users模块代码
|
||||
const usersCode = lines.slice(startLine - 1, endLine + 1).join('\n');
|
||||
|
||||
console.log('\n提取的users模块代码:');
|
||||
console.log('=' .repeat(50));
|
||||
console.log(usersCode);
|
||||
console.log('=' .repeat(50));
|
||||
|
||||
// 将app.替换为router.
|
||||
const routerCode = usersCode.replace(/app\.(get|post|put|delete|patch)/g, 'router.$1');
|
||||
|
||||
// 修复路径:移除/api前缀,因为主文件会使用app.use('/api/users', usersRoutes)
|
||||
const fixedRouterCode = routerCode
|
||||
.replace(/router\.get\('\/api\/users'/g, "router.get('/'")
|
||||
.replace(/router\.put\('\/api\/users\/(:id)'/g, "router.put('/$1'")
|
||||
.replace(/router\.put\('\/api\/users\/(:id)\/password'/g, "router.put('/$1/password'")
|
||||
.replace(/router\.post\('\/api\/users'/g, "router.post('/'")
|
||||
.replace(/router\.delete\('\/api\/users\/(:id)'/g, "router.delete('/$1'");
|
||||
|
||||
console.log('\n转换后的router代码:');
|
||||
console.log('=' .repeat(50));
|
||||
console.log(fixedRouterCode);
|
||||
console.log('=' .repeat(50));
|
||||
|
||||
// 创建完整的users路由文件
|
||||
const fullUsersCode = `const express = require('express');
|
||||
const router = express.Router();
|
||||
|
||||
// 导入依赖
|
||||
const db = require('../db-sqlite');
|
||||
const { hashPassword, verifyPassword } = require('../utils/auth');
|
||||
const { authenticate } = require('../middleware/auth');
|
||||
|
||||
${fixedRouterCode}
|
||||
|
||||
module.exports = router;`;
|
||||
|
||||
console.log('\n完整的users路由文件内容:');
|
||||
console.log('=' .repeat(50));
|
||||
console.log(fullUsersCode);
|
||||
console.log('=' .repeat(50));
|
||||
|
||||
// 写入文件
|
||||
fs.writeFileSync('routes/users.js', fullUsersCode);
|
||||
console.log('\n✅ users路由文件已创建:routes/users.js');
|
||||
|
||||
// 验证文件
|
||||
const fileContent = fs.readFileSync('routes/users.js', 'utf8');
|
||||
console.log(`文件大小:${fileContent.length} 字符`);
|
||||
if (fileContent.length > 100) {
|
||||
console.log('✅ 文件创建成功,内容长度 > 100 字符');
|
||||
} else {
|
||||
console.log('❌ 文件创建失败,内容长度不足');
|
||||
process.exit(1);
|
||||
}
|
||||
Reference in New Issue
Block a user