我是 Node 新手,尝试从服务器请求一些 json 数据并将其保存到文件中。我可以毫无问题地接收数据,但在收到所有数据后无法弄清楚如何写入文件。我需要回调还是需要使用 http.CreateServer() ?任何有关此问题的帮助将不胜感激。
这是我到目前为止所拥有的:
"use strict";
const request = require('request');
const fs = require('fs');
var options = {
url: 'url-to-request-data',
method: 'GET',
accept: 'application/json',
json: true,}
};
// Start the request
request(options, function(error, response, body) {
if (error) {
return console.log(error);
} else {
var path = "~/jsonfile.json";
fs.writeFile(path, body);
}
});
最佳答案
您有几个问题。
fs.writeFile
采用第三个参数,即回调函数,它将通知您遇到的任何错误。
fs.writeFile(path, body, err => console.error(err));
在具有该文件路径的 *nix 系统上,您将收到错误:ENOENT:没有这样的文件或目录
~
是一个bash扩展,node不知道用它做什么。
用途:
const os = require('os');
const path = require('path');
const filePath = path.join(os.homedir(), 'jsonfile.json');
fs.writeFile(path, body, err => console.error(err));
如果该 URL 返回 json
,那么您将得到 [Object object]
写入 ~/jsonfile.json
,正如您清楚的那样请求一个。
你必须解决:
- 删除
json: true
- 或者
fs.writeFile(path, JSON.stringify(body), err =>/* ... */)
如果您只写入文件,最好的方法是使用streams
const filePath = path.join(os.homedir(), 'jsonfile.json');
request(options).pipe(fs.createWriteStream(filePath));
// See link for error handling
您可以在here中阅读有关请求
和流以及如何处理错误的更多信息。
关于javascript - 使用 Node.js 接收 json 数据并写入文件的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50847482/