Files
nxxmdata/government-backend/simulate-server-startup.js

103 lines
3.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 清除指定模块的缓存
function clearModuleCache() {
const modulesToClear = Object.keys(require.cache).filter(key =>
key.includes('HarmlessPlace') || key.includes('database') || key.includes('controller')
);
console.log('清除以下模块的缓存:', modulesToClear.length, '个模块');
modulesToClear.forEach(key => {
console.log('-', key);
delete require.cache[key];
});
}
// 模拟服务器启动过程
async function simulateServerStartup() {
try {
// 1. 首先清除模块缓存
clearModuleCache();
// 2. 记录加载顺序
console.log('\n=== 开始模拟服务器启动过程 ===');
// 3. 先加载数据库配置 - 注意这里使用正确的路径
console.log('\n1. 加载数据库配置...');
const sequelize = require('./config/database');
console.log('数据库实例加载完成');
console.log('sequelize的类型:', typeof sequelize);
// 4. 测试数据库连接
console.log('\n2. 测试数据库连接...');
try {
await sequelize.authenticate();
console.log('数据库连接成功');
} catch (error) {
console.error('数据库连接失败:', error.message);
}
// 5. 加载HarmlessPlace模型
console.log('\n3. 加载HarmlessPlace模型...');
const HarmlessPlace = require('./models/HarmlessPlace');
console.log('HarmlessPlace模型加载完成');
console.log('HarmlessPlace的类型:', typeof HarmlessPlace);
console.log('HarmlessPlace是否有findAndCountAll方法:', typeof HarmlessPlace.findAndCountAll !== 'undefined');
if (HarmlessPlace.findAndCountAll) {
console.log('findAndCountAll的类型:', typeof HarmlessPlace.findAndCountAll);
}
// 6. 尝试调用findAndCountAll方法
console.log('\n4. 尝试调用findAndCountAll方法...');
try {
const result = await HarmlessPlace.findAndCountAll({
limit: 10,
offset: 0
});
console.log('findAndCountAll调用成功结果:', result);
} catch (error) {
console.error('findAndCountAll调用失败:', error.message);
}
// 7. 加载控制器
console.log('\n5. 加载HarmlessPlaceController控制器...');
const harmlessPlaceController = require('./controllers/HarmlessPlaceController');
console.log('控制器加载完成');
// 8. 创建模拟的req和res对象
const mockReq = {
query: {
page: 1,
pageSize: 10
}
};
const mockRes = {
json: function(data) {
console.log('res.json被调用:', data);
},
status: function(code) {
console.log('res.status被调用:', code);
return this;
}
};
// 9. 尝试调用控制器的getList方法
console.log('\n6. 尝试调用控制器的getList方法...');
try {
await harmlessPlaceController.getList(mockReq, mockRes);
console.log('控制器getList方法调用成功');
} catch (error) {
console.error('控制器getList方法调用失败:', error.message);
console.error('错误堆栈:', error.stack);
}
console.log('\n=== 服务器启动模拟完成 ===');
} catch (error) {
console.error('模拟服务器启动过程中发生错误:', error.message);
console.error('错误堆栈:', error.stack);
}
}
// 运行模拟
console.log('开始执行服务器启动模拟测试...');
simulateServerStartup().catch(err => console.error('测试过程中出错:', err));