我对 Node.js 和一般编码相当陌生,但我正在尝试
将名为 parsed 的变量的值写入 fs.writeFile()
有什么方法可以做到这一点,因为每当我运行它时,它都会创建 txt 文件,但它有 [object Object]
如果这没有任何意义,我提前道歉:
https.get(`https://api.openweathermap.org/data/2.5/weather?zip=${zip},us&APPID=${config.key}`, res => {
res.on('data', data => {
body = data.toString();
});
res.on('end', () => {
const parseData = JSON.parse(body);
fs.writeFile('data.txt', parsedData)
console.log(parsed_data);
});
});
module.exports = wrappedAll;
最佳答案
[object Object] 是从对象到字符串的默认转换。请注意,在代码的以下部分中 -
res.on('data', data => {
body = data.toString();
});
每次为 body 变量分配不同的值(覆盖之前的值)。您想要做的是在每个“数据”事件上向 body 变量附加一个新数据 block 。
重要的是要了解,您不会将数据作为一个完整的片段获取,而是将其作为流获取:在每个“on”事件中,您仅获得其中的一部分(并且只有在“end”事件中,您才会将其作为一个整体),因此将其解析为部分完整的数据片段并没有真正的意义。
您可以在数据加载完成(在“结束”事件时)时解析数据,但是,因为您无论如何都将响应写入文件,所以您可以将响应保留为字符串,无论如何您都不需要或不需要解析它。
我建议改为执行以下操作:
const https = require('https');
const fs = require('fs');
const url =
"https://api.openweathermap.org/data/2.5/weather?zip=${zip},us&APPID=${config.key}";
function yourFunc(zip, config) {
https.get(url, res => {
let result = '';
res.on('data', data => {
result += data;
});
res.on('end', () => {
fs.writeFile('data.text', result);
});
});
}
关于javascript - 如何将变量的内容写入 fs.writeFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49721391/