我尝试使用Node JS解析JSON文件,但该文件似乎没有被正确读取。我一直收到这个错误:
request.on("error", function(error){
^
TypeError: Cannot read property 'on' of undefined
at Object.<anonymous> (/Users/jaeeunlee/Downloads/takehome_test-master/prediction.js:31:8)
at Module._compile (module.js:410:26)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Function.Module.runMain (module.js:442:10)
at startup (node.js:136:18)
at node.js:966:3
My Node JS文件:
var fs = require("fs");
var request = fs.readFile("blog_data.json", 'utf8', function(response){
var body = "";
console.log(response.statusCode);
response.on("data", function(chunk) {
body += chunk;
});
response.on("end", function(){
// var profile = JSON.parse(body);
// console.dir(profile);
})
});
request.on("error", function(error){
console.error(error.message);
})
答案 0 :(得分:3)
readFile
的回调有两个参数:错误和数据。它一次读取所有数据。您试图像http.request
那样使用它,但它的工作方式非常不同。
const fs = require("fs");
fs.readFile("blog_data.json", 'utf8', (err, data) => {
if (err) return console.error(err.message);
console.dir(JSON.parse(data));
});
这不是HTTP请求。没有statusCode
等等。您只是在阅读文件。
此外,node.js可以使用require
将JSON导入为对象:
console.dir(require("./blog_data.json"));
答案 1 :(得分:0)
您可能需要fs.createReadStream
而不是readFile
。请参阅https://nodejs.org/api/fs.html#fs_fs_createreadstream_path_options。
否则,请参阅https://nodejs.org/api/fs.html#fs_fs_readfile_file_options_callback。像这样使用它:
fs.readFile('blog_data.json', function(err, data) {
...
});