如何将变量的内容写入 fs.writeFile

How do i write the contents of a variable into fs.writeFile

我对 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 变量分配不同的值(覆盖之前的值)。你想要做的是在每个 'data' 事件上向 body 变量附加一个新的数据块。

了解您获取的数据不是一个完整的片段,而是一个流:在每个 'on' 事件中,您只能获取其中的一部分(并且仅在 'end' 事件你将把它作为一个整体)所以将它解析为部分完整的数据片段真的没有意义。

您可以在数据加载完成时(在 '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);
    });
  });
}