为什么我的数据在客户端上拿不到?Express.js

客户端代码。

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

(0)
上一篇 1天前
下一篇 1天前

相关推荐

发表评论

登录后才能评论