【问题标题】:Electron-fetch returns json as [object object] but network console shows a proper json object being returnedElectron-fetch 将 json 作为 [object object] 返回,但网络控制台显示返回的正确 json 对象
【发布时间】:2020-02-02 17:13:21
【问题描述】:

我正在使用 electron 和 reactjs 开发一个项目。因此,我使用 electron-fetch 从 API 获取数据,使用 JSON 发送和返回 JSON 响应。

在网络控制台中,我可以看到我得到了预期的结果(我还使用了测试客户端(Insomnia)并确认我得到了如下 JSON 响应:

{
  "result": 0,
  "message": null,
  "data": [
    {
      "MonitorId": 2,
      "LogName": "Test",
      "LogPath": "/root/test"
    }
  ]
}

但是,在电子应用程序中,在网络选项卡响应中,我可以看到上面的 JSON 对象,但控制台中显示以下错误

SyntaxError: JSON 中位置 1 的意外标记 o 在 JSON.parse() 在 index.es.js:234

当我打印出 response.body 时,我看到的是 [object object] 而不是实际的 JSON。

下面是我的获取请求

try
{
    fetch(url, {
         method: 'post',
         headers: {
           'Content-Type': 'application/json',
           'authorisation_token': authorisation
         },
         mode: 'cors',
         body: JSON.stringify(postArray)
    }).then(function (response) {
         if (response.status !== 200)
         {
             console.log("Something went wrong. Status Code: " + response.status);
             reject(response);
             return;
         }

         console.log(response);

         response.json().then(function (data) {
             resolve(data);
         }).catch(function (err) {
             console.error("Caught Error: " + err);
             reject(err);
         });
    });
}
catch (err)
{
   console.error(err);
}

我最近以同样的方式使用了普通的 fetch 并且没有遇到问题,所以不确定这是否是电子获取特有的东西,或者我是否在这里遗漏了一些东西。

【问题讨论】:

  • 为什么会有resolve()reject()电话? fetch() 返回一个Promise,因此不需要额外的Promise
  • @Andreas 我在我自己的辅助方法中调用 fetch,它返回一个承诺,所以当我的方法完成时,它被调用的地方可以得到承诺回调
  • 嗯,乍一看我也没有看到错误 - 内置电子 net API 是否正确返回 json?如果是,是否值得仔细看看图书馆?
  • 不确定我从未使用过。才刚刚开始使用电子/反应。快速浏览一下,我想我需要从 start.js (创建 BrowserWindow 的地方)运行它?
  • 你需要在主进程的某个地方运行它(我猜你想在主进程中使用它——或者你会使用浏览器窗口 fetch() )。即使不创建 BrowserWindow(仅使用电子而不是节点来运行脚本),您也应该能够运行此 api。对我来说,将电子视为扩展的 node.js 运行时很有帮助。

标签: javascript json electron fetch


【解决方案1】:

正如 cmets 中提到的,我查看了一个使用 Electron 和 React (Insomnia.Rest) 的项目,发现当他们提出请求时,他们似乎并没有使用 electron-fetch 只是普通的 fetch,但他们确实使用了 @ 987654321@ 并且当我尝试它似乎按预期工作时

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 2015-07-16
    • 2018-08-10
    • 2019-07-03
    • 2017-06-09
    相关资源
    最近更新 更多