面试题答案
一键面试const fs = require('fs');
const path = require('path');
const log4js = require('log4js');
// 配置日志记录
log4js.configure({
appenders: { errorLogger: { type: 'file', filename: 'error.log' } },
categories: { default: { appenders: ['errorLogger'], level: 'error' } }
});
const logger = log4js.getLogger('errorLogger');
function readAndProcessConfig() {
try {
// 读取JSON配置文件
const configFilePath = path.join(__dirname, 'config.json');
const data = fs.readFileSync(configFilePath, 'utf8');
// 解析JSON数据
const config = JSON.parse(data);
// 假设的复杂同步计算函数
function complexCalculation(obj) {
let result = 0;
for (const key in obj) {
if (typeof obj[key] === 'object') {
result += complexCalculation(obj[key]);
} else if (typeof obj[key] === 'number') {
result += obj[key];
}
}
return result;
}
// 执行复杂计算
const calculationResult = complexCalculation(config);
console.log('计算结果:', calculationResult);
} catch (error) {
// 错误处理逻辑,记录错误日志
logger.error('发生错误:', error.message);
console.error('发生错误:', error.message);
}
}
readAndProcessConfig();
在上述代码中:
- 日志配置:使用
log4js
库来配置错误日志记录到error.log
文件。 - 读取文件:使用
fs.readFileSync
同步读取文件。 - 解析JSON:使用
JSON.parse
解析读取到的文件内容。 - 复杂计算:假设了一个简单的复杂同步计算函数
complexCalculation
来遍历多层嵌套对象并进行计算。 - 错误处理:使用
try...catch
捕获读取文件、解析JSON和计算过程中的错误,并使用日志记录错误信息,同时也在控制台打印错误信息。