如何通过文件读取操作获取其他文件中的值?(Node.js场景)
解决读取文本文件后无法直接使用对象内容的问题
看起来你已经成功读取到了checkin.txt的内容,但问题应该是没法直接把读取到的字符串当作JavaScript对象来访问属性对吧?毕竟fs.readFile返回的data是纯字符串,哪怕它长得像对象,本质还是字符串。下面给你两种可行的解决方案:
方案1:改用标准JSON格式(推荐)
你的checkin.txt里的内容是非标准的JS对象写法——JSON要求所有属性名必须用双引号包裹,所以先把checkin.txt的内容改成标准JSON:
{"cronCondition": true, "startDate": ""}
然后在transaction.js里用JSON.parse()把字符串转换成真正的JS对象,代码修改如下:
fs.readFile(__dirname + "/checkin.txt", 'utf8', function (err, data) { if (err) { console.log(err); process.exit(0); } else { try { // 把字符串解析成JS对象 const checkinConfig = JSON.parse(data); // 现在可以正常访问属性了 console.log('cronCondition:', checkinConfig.cronCondition); console.log('startDate:', checkinConfig.startDate); } catch (parseError) { console.log('解析配置出错:', parseError); } process.exit(); } })
另外注意你原代码里的路径"/ checkin.txt"多了个空格,可能会导致找不到文件,改成"/checkin.txt"更稳妥。
方案2:不修改文本格式(仅当文件内容完全可控时使用)
如果因为某些原因没法修改checkin.txt的格式,可以用eval来解析这个JS对象字符串,但一定要注意安全风险——eval会执行字符串里的任意代码,如果这个文件被恶意篡改,会有安全隐患。代码示例:
fs.readFile(__dirname + "/checkin.txt", 'utf8', function (err, data) { if (err) { console.log(err); process.exit(0); } else { try { // 用括号包裹字符串,避免语法错误 const checkinConfig = eval(`(${data})`); console.log('cronCondition:', checkinConfig.cronCondition); } catch (evalError) { console.log('解析配置出错:', evalError); } process.exit(); } })
总结一下,优先选方案1,标准JSON格式更安全、规范,也不会有潜在的安全问题。
内容的提问来源于stack exchange,提问作者Rahul Saini
相关产品推荐
相关产品推荐

