客户端代码。
fetch(`${this.url}?url=${this.getInputData()}`)
.then(res => {
return JSON.parse(res);
})
.then(data => {
const renderer = new GalleryRenderer();
renderer.renderImages(data);
})
.catch(err => console.error(err));
Express代码:
router.get("/url-parse", (req, res) => {
const { query } = req;
const { error } = Joi.object({
url: Joi.string().required().uri(),
}).validate(query);
if (error) {
res.status(400).send(error.details[0].message);
}
parser
.parse(query.url)
.then(elemHandles => {
return Promise.all(
elemHandles.map(elemHanle => elemHanle.getAttribute("src")),
);
})
.then(imgSources => {
res.status(200).send(JSON.stringify(imgSources));
})
.catch(err => {
throw new Error(err);
});
});
JSON.stringify
串化一个字符串数组。
我在客户端上有这样的响应。
Response {type: "basic", url: "http://localhost:3000/url-parse?url=some-url-here", redirected: false, status: 200, ok: true, …}
body: ReadableStream
bodyUsed: false
headers: Headers {}
ok: true
redirected: false
status: 200
statusText: "OK"
type: "basic"
url: "http://localhost:3000/url-parse?url=some-url-here"
下面是一个错误。
SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
据我所知,该错误显示,我没有收到服务器的json数据。 有人知道是什么原因吗?谢谢你。
解决方案:
也试试这个变化
确保响应将有utf8字符集和applicationjson内容类型。
.then(imgSources => {
res.status(200).send(JSON.stringify(imgSources));
})
到
.then(imgSources => {
res.status(200).json({imgSources});
})
本文来自投稿,不代表实战宝典立场,如若转载,请注明出处:https://www.shizhanbaodian.com/23375.html