Javascript app.js中的我的JSON.parse无法正常运行

Javascript app.js中的我的JSON.parse无法正常运行,javascript,node.js,google-maps,express,google-api,Javascript,Node.js,Google Maps,Express,Google Api,app.js: const express = require("express"); const https = require("https"); const app = express(); const port = 3000; app.get("/",function(req,res){ const url ="https://maps.googleapis.com/maps/api/geocode/jsonaddress=1600+Amphitheatre+Parkway,+M

app.js

const express = require("express");
const https = require("https");
const app = express();

const port = 3000;

app.get("/",function(req,res){
  const url ="https://maps.googleapis.com/maps/api/geocode/jsonaddress=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY;
      console.log(response.statusCode);
    response.on("data",function(data){
      var jatin=JSON.parse(data);
      console.log(jatin);
  })
})

app.listen(port, () => console.log(`Example app listening on port ${port}!`));
控制台上的错误

app.listen(3000,function(){console.log(“服务器在端口上启动 3000“;})

服务器已在端口3000上启动200未定义:26 “长名称”

SyntaxError:JSON输入意外结束 在JSON.parse()处 在收到消息时。(/home/jatin/Downloads/full_stack/Web Development/maps/app.js:11:21) 在IncomingMessage.emit(events.js:189:13) 在IncomingMessage.Readable.read(_stream_Readable.js:487:10) 在流程中(_stream_readable.js:931:34) 在resume上(_stream_readable.js:912:3) 在进程中。_tickCallback(internal/process/next_tick.js:63:19)[nodemon]应用程序崩溃-在启动前等待文件更改

当我在浏览器上运行时,输出是可见的,但在控制台上它会抛出一个错误。 由于某些原因,JSON.parse()无法按预期工作

我正在尝试进行一个地理编码API调用,作为响应,它给了我一个JSON输出。。。 当我在浏览器上输入它作为URL时,会收到预期的输出 但是当app.js在node express服务器上运行时,当我点击localhost:3000时,我得到了控制台错误


显然,JSON.parse(“数据”)正在工作,但意外停止。这会导致错误。

您需要让代码在
end
事件上执行JSON.parse,如下示例所示:

请注意,这是,但对于应该是相同的,因此在您的代码中('data')上的
应该在对其执行
JSON.parse()之前用于组装块

const express = require("express");
const https = require("https");
const app = express();

const port = 3000;

app.get("/", function(req, res) {
  const url = "API_URL";
  https.get(url, function(response) {
    console.log(response.statusCode);
    let body = "";
    response.on("data", function(data) {
      body += data;
    });

    response.on("end", function() {
      console.log(JSON.parse(body));
    });
  });
  res.end("End data response");
});

app.listen(port, () => console.log(`Example app listening on port ${port}!`));
基本上,
.on('end',callback')
.on('data',callback')
数据
接收和请求
事件的事件侦听器,并且能够在使用
http时处理节点中的请求响应.get
您必须在
data
事件上附加一个事件侦听器,该事件在您的请求每次收到请求响应块时都会被调用,并且一旦服务结束请求,将调用事件
end
,声明请求结束后没有来自服务器的更多数据

如合同所述:

由于某些原因,回调必须注意使用响应数据 在http.ClientRequest部分中说明


您需要让您的代码在
end
事件上执行JSON.parse,如下示例所示:

请注意,这是,但对于应该是相同的,因此在您的代码中('data')
上的
应该在对其执行
JSON.parse()之前用于组装块

const express = require("express");
const https = require("https");
const app = express();

const port = 3000;

app.get("/", function(req, res) {
  const url = "API_URL";
  https.get(url, function(response) {
    console.log(response.statusCode);
    let body = "";
    response.on("data", function(data) {
      body += data;
    });

    response.on("end", function() {
      console.log(JSON.parse(body));
    });
  });
  res.end("End data response");
});

app.listen(port, () => console.log(`Example app listening on port ${port}!`));
基本上,
.on('end',callback')
.on('data',callback')
数据
接收和请求
事件的事件侦听器,并且能够在使用
http时处理节点中的请求响应.get
您必须在
data
事件上附加一个事件侦听器,该事件在您的请求每次收到请求响应块时都会被调用,并且一旦服务结束请求,将调用事件
end
,声明请求结束后没有来自服务器的更多数据

如合同所述:

由于某些原因,回调必须注意使用响应数据 在http.ClientRequest部分中说明


您可以添加响应数据结构吗?流中的每个块都会触发“数据”。您必须收集所有块,然后将它们组合到整个响应中,然后对其调用
JSON.parse
。或者使用支持解析流的库(例如,
fetch
)response.on(“数据”),function(data){var jatin=JSON.parse(data);console.log(jatin);---------------------------------------------------------------------------------------------------------------这就是我正在做的…在var Jatintry日志数据中收集整个响应流,而不使用JSON.parse共享日志,响应m可能不是有效的可解析JSON。请在问题本身中添加记录的数据。这将有助于调试。能否添加响应数据结构?“数据”为流中的每个区块触发。您必须收集所有区块,然后将它们组合到整个响应中,然后对其调用
JSON.parse
。或者使用支持解析流的库(例如
fetch
)response.on(“数据”,函数(数据){var jatin=JSON.parse(data);console.log(jatin);---------------------------------------------------------------------------------------------------------------这就是我正在做的…在var Jatintry日志数据中收集整个响应流,而不使用JSON.parse共享日志,响应m可能不是有效的可解析JSON。请在问题本身中添加记录的数据。这将有助于调试。如果代码有效^^理解概念。感谢您的努力。感谢。response.on(“数据”,函数(数据){body+=data;完成任务。很高兴提供帮助:)response.on(“结束”,函数(){console.log(JSON.parse(body));});})
您能否更清楚地解释此代码,并提及
response.on(“end”,function()中的
end
兄弟,我想从中间而不是响应结束数据中选取内容。那么你能相应地更新答案吗?感谢不断的帮助。我更新了我的答案,以解释
。在('end')
,“我想从中间而不是响应结束数据中选取内容”我不明白你想要什么,你不能这么做,因为请求应该在你对它进行JSON.parse之前结束,妈