这是我使用express和node.js编写的代码
const express = require("express");
const https = require("https");
const app = express();
app.get("/", function(req, res) {
// Url to my api key
const url = "https://api.spoonacular.com/recipes/random?apiKey=...&number=1";
https.get(url, function(response) {
response.on("data", function (data) {
console.log(JSON.parse(data));
// const theRecipe = JSON.parse(data);
console.log(data);
});
});
res.send("The server is up and running");
});
app.listen(3000, function () {
console.log("Server started at port 3000");
});
当我在本地主机上刷新网页时,在控制台上出现以下错误:
引用
SyntaxError:JSON 输入意外结束
在 JSON.parse()
在传入消息。 (C:\Users\ArunBohra\Desktop\FoodRecipes\app.js:12:33)
引用
任何人都可以找到我的代码有什么问题吗?
The data
当一个事件触发时chunk来自响应的数据已到达。您正在尝试解析第一个块,就好像它是完整的 JSON 文本一样。
你需要收集每个部分的碎片data
事件,但要等到end
事件在将它们连接到可以解析的完整 JSON 字符串之前触发。
有一个文档中获取和解析 JSON 的示例 https://nodejs.org/api/http.html#httpgeturl-options-callback.
您可能想看看像这样的模块axios https://www.npmjs.com/package/axios and node-fetch https://www.npmjs.com/package/node-fetch它会为您处理这个问题(以及 JSON 解析),同时提供基于现代 Promise 的 API。
如果您有足够新的 Node 版本,您可以使用原生获取 API https://nodejs.org/en/blog/announcements/v18-release-announce/#fetch-experimental.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)