从我自己的服务器获取,错误:“JSON 输入意外结束”
Posted
技术标签:
【中文标题】从我自己的服务器获取,错误:“JSON 输入意外结束”【英文标题】:Fetching from my own Server, ERROR: "Unexpected end of JSON input" 【发布时间】:2021-09-03 06:45:01 【问题描述】:我对后端真的很陌生,并试图摆弄 API-Calls 和 Client-Server 的东西。
const express = require("express");
const cors = require("cors");
const fetch = require("node-fetch");
const app = express();
app.use(cors());
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Listening on port $port`));
app.get("/express_backend", (req, res) =>
fetch(
"http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=XXXXXXXXXXXXXXXXXX&steamid=76561197996613749&format=json"
)
.then((response) => response.json())
.then((data) => console.log(data))
.then((data) => res.send(data));
);
这是我的服务器文件,它正确地从 steam api output screenshot 获取数据
但我很难将它从服务器获取到我的客户端。
import React, useState, useEffect from "react";
const App = () =>
const [data, setData] = useState(null);
useEffect(() =>
fetch("/express_backend")
.then(function (response)
return response.json();
)
.then(function (json)
let fetchedData = json;
setData(fetchedData);
)
.catch(function (err)
console.log(err.message);
);
, []);
return (
<div>
<p>data</p>
</div>
);
;
export default App;
我认为“JSON 输入意外结束”错误与“response.json() 行有关,但我不确定如何继续或如何修复它。提前致谢!
【问题讨论】:
【参考方案1】:后端服务器有一个小问题。在下面的 Promise 链中,第二个 thenable 没有向第三个 thenable 返回任何东西,所以基本上你在做res.send(data)
时没有向“响应”写任何东西@
app.get("/express_backend", (req, res) =>
fetch(
"http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=XXXXXXXXXXXXXXXXXX&steamid=76561197996613749&format=json"
)
.then((response) => response.json())
.then((data) => console.log(data))
.then((data) => res.send(data));
);
正确的顺序是合并第二个和第三个然后处理程序,像这样
app.get("/express_backend", (req, res) =>
fetch(
"http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=XXXXXXXXXXXXXXXXXX&steamid=76561197996613749&format=json"
)
.then((response) => response.json())
.then((data) =>
console.log(data);
res.send(data);
)
)
【讨论】:
以上是关于从我自己的服务器获取,错误:“JSON 输入意外结束”的主要内容,如果未能解决你的问题,请参考以下文章
为啥 JpaRepository.findAll() 方法从我的 Oracle 数据库中获取错误的数据?
如何通过 YouTube Data API v3 从我自己的 YouTube 频道获取所有视频
错误消息:应为 BEGIN_ARRAY 但是来自我自己的休息服务器 Localhost 的 BEGIN_OBJECT
我正在尝试从我的 vuex 存储中获取数据,但它给出了一个错误
iOS 应用程序中的 Twitter 提要 - 我如何仅从我自己的帐户获取列表提要 [无需应用用户登录 Twitter]