控制台日志未通过 fetch() 打印来自服务器的响应

问题描述 投票:0回答:1

我正在使用一个脚本将交易从我的卡网站发送到本地主机,该脚本准确地接收了它,并且还成功发送了 json 响应,但之后

console.log
根本不显示它。我可以在开发工具中的网络选项卡上检查响应,但只是好奇不打印 json 响应的原因是什么。

async function sendData(username, transactions) {
  let apiUrl = "http://localhost:3100/api";
  let postOptions = {
    method: "POST",
    cache: "no-cache",
    headers: {
      "Content-Type": "application/json",
    },
    redirect: "follow",
    referrerPolicy: "no-referrer",
    body: JSON.stringify({ username, transactions }),
  };

  try {
    let response = await fetch(apiUrl, postOptions);
    if (!response.ok) {
      throw new Error(`Response status: ${response.status}`);
    }
    let serverMessage = await response.json();
    console.log(serverMessage);
  } catch (error) {
    console.log(error.message);
  }
}

我什至尝试不使用

async
,如下所示,但仍然没有打印任何内容。

function sendData(username, transactions) {
  let apiUrl = "http://localhost:3100/api";
  let postOptions = {
    method: "POST",
    cache: "no-cache",
    headers: {
      "Content-Type": "application/json",
    },
    redirect: "follow",
    referrerPolicy: "no-referrer",
    body: JSON.stringify({ username, transactions }),
  };

  fetch(apiUrl, postOptions)
    .then((res) => res.json())
    .then((msg) => console.log(msg))
    .catch((e) => console.log(e));
}

一个澄清: 当我在 JS 注入器 chrome 扩展(例如 scripty)中运行相同的代码(当然有一些触发前端)时,它会打印响应,但当我在控制台中手动调用它时不会打印响应。

javascript promise google-chrome-devtools fetch-api console.log
1个回答
0
投票

我刚刚通过我的 URL 使用模拟服务器端对其进行了测试,其中服务器响应一些 JSON 内容。此 URL 是我用于测试您的代码的唯一修改。

一切正常,并且可以与您原来的异步变体一起使用。

console.log(serverMessage);
行准确输出服务器端规定的测试 JSON 字符串。我用 node.js 测试了你的代码。

所以,问题不在于您在问题中提出的代码。可能的问题可能在于错误的观察:您可能已经停止了 localhost 上的服务,服务部分可能在测试之间被破坏,或者您可能提供了与您正在执行的不完全相同的 JavaScript。请仔细检查所有内容,您的脚本应该可以再次运行。

© www.soinside.com 2019 - 2024. All rights reserved.